201521123117 《Java程序設計》第3周學習總結

1. 本週學習總結:

2. 書面做業

Q1:代碼閱讀java

public class Test1 { 安全

  private int i = 1;//這行不能修改 ide

  private static int j = 2;函數

  public static void main(String[] args){學習

  geti(); Test1getj(); this

  } spa

  public static void geti() { 設計

  System.out.println(i); code

  } 對象

  public static void getj() {

  System.out.println(j);

  }

}

以上代碼能否編譯經過?哪裏會出錯?爲何?嘗試改正?
 若是建立3個Test1對象,有內存中有幾個i,幾個j?

答:編譯沒法經過。Test1getj()會出錯,由於找不到這個方法;System.out.println(i)這行也會出錯,由於i並非static類型的,靜態的方法不能調用非靜態的值,應將public static void geti()改成 public static void geti(int i)。有一個i,一個j。

Q2:構造函數有什麼用?其編寫格式是什麼?若是一個類不寫構造函數,它有構造函數嗎?若是一個類中只有帶參的構造函數,它有沒有不帶參數的默認構造函數?

答:構造函數能對類進行初始化操做,如初始化類的屬性值;編寫格式public 類名(){};有;沒有。

Q3:使用java.lang.Math類的函數時,爲何不須要new?若是new Math()會產生什麼錯誤?分析緣由?

答:由於Math是final類,而不是static類。又由於構造函數被聲明爲privata,所以不能被外部調用,因此不能new出來一個新的對象。Math類的全部方法都是靜態方法,使用Math.方法名就能夠;

     會產生編譯錯誤:因爲構造函數被聲明爲私有的,就是說明不能被外部調用,因此不能new出來一個新的對象。

Q4:什麼是重載?什麼是構造函數重載?在java.lang.Math類中舉出1個函數重載的例子?怎麼才能區分兩個重載函數?

答:重載是指函數或者方法有相同的名稱,可是參數列表不相同的情形。

     構造函數的重載是指當構造函數具備相同的名字,而參數的個數或參數類型不相同。

     static int getExponent(double d)和static int getExponent(float f)。

     能夠根據參數列表來區分。

Q5:final修飾的變量不能改變,爲何以下代碼能夠正常運行?

答:final 限定的是NUMBS這個對象。這個對象不能再被修改指向新的對象。但它所指向的對象(NUBMS[2])自己是能夠修改的。

Q6:閱讀代碼EmployeeTest.java,回答:

1.爲何其屬性均爲private?這樣設計有什麼好處?

2.爲Employee類增長一個無參構造函數,調用其有參構造函數,設置name爲僱員1, salary爲3000, hireDay的年月日爲2017年3月5日。(粘貼代碼)

3.爲Employee類再增長一個有參構造函數,參數只有name與salary,hideDay爲當前日期。(粘貼代碼)

答:1.用private封裝了類私有數據,不但願被外部的類訪問。這樣可讓用戶沒法直接存取,而必須經過管理者提供的操做方法,通過定義的流程纔有可能存取私有數據。加強了保密性和安全性。

      2.public Employee() {

            this("僱員1", 3000.0, 2017, 3, 5);

         }

      3.

Q7:編寫函數public static boolean isMondayToFriday()
功能:判斷今天若是是週一到週五,直接輸出如「上班時間」並返回true,不然輸出「休息時間」。

答:

        public static boolean isMondayToFriday(){
        LocalDateTime now = LocalDateTime.now();
        DayOfWeek d = now.getDayOfWeek();
        if(d==DayOfWeek.Monday && d=DayOfWeek.Tuesday && d=DayOfWeek.Wednesday
                && d=DayOfWeek.Thursday&& d=DayOfWeek.Friday)
       {
           System.out.println("上班時間");
           return true;
       }
       else{
              System.out.println("休息時間");
              return false;
             }
     }

3. 碼雲代碼提交記錄

4. PTA實驗

1.掌握了:無參構造函數、有參構造函數、toString函數、對每一個屬性setter/getter方法構造的編寫。

2.明白了初始化類與對象的三種方法:構造函數、初始化塊、靜態初始化塊。且他們的執行順序爲:靜態初始化塊>初始化塊>構造函數。

3.使用Math.PI時由於radius爲int型因此結果須要轉換爲int型。

相關文章
相關標籤/搜索