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;
}
}
1.掌握了:無參構造函數、有參構造函數、toString函數、對每一個屬性setter/getter方法構造的編寫。
2.明白了初始化類與對象的三種方法:構造函數、初始化塊、靜態初始化塊。且他們的執行順序爲:靜態初始化塊>初始化塊>構造函數。
3.使用Math.PI時由於radius爲int型因此結果須要轉換爲int型。