1. 本章學習總結
你對於本章知識的學習總結
2. 書面作業
1. 代碼閱讀
代碼閱讀
public class Test1 {
private int i = 1;//這行不能修改
private static int j = 2;
public static void main(String[] args) {
geti();
Test1getj();
}
public static void geti() {
System.out.println(i);
}
public static void getj() {
System.out.println(j);
}
}
- 以上代碼可否編譯通過?哪里會出錯?為什么?嘗試改正?
- 如果創建3個Test1對象,有內存中有幾個i,幾個j?
Answer:編譯沒辦法通過,System.out.println(i);會出錯。因為靜態方法不能調用一個非靜態的成員變量,get是靜態調用不能調用未經static修飾的變量。
修改前代碼:
修改后代碼:
如果創建3個Test1對象,內存中會有1個i,1個j;j被static修飾后,在編譯時由內存分配一塊內存空間,該類的所有對象都會共享這塊內存空間;i同理可證。
2.構造函數有什么用?其編寫格式是什么?如果一個類不寫構造函數,它有構造函數嗎?如果一個類中只有帶參的構造函數,它有沒有不帶參數的默認構造函數?
Answer:在定義類時,可以使用構造函數定義對象建立的初始流程。構造函數是與類名稱同名,無需聲明返回類型的方法,可以避免重復流程出現一般格式為pubic類名(){}。如果一個類不寫構造函數,系統會自動加入一個無參數的內容為空的函數;如果你創造了一個帶有參數的構造方法,那么無參的構造方法必須顯式的寫出來,否則會編譯失敗。
3.使用java.lang.Math類的函數時,為什么不需要new?如果new Math()會產生什么錯誤?
Answer:Math類所有的成員變量以及成員方法都是靜態的,靜態修飾的都可以直接用類名去調用而不需要用new;如果new Math()會提示這個構造函數不可見也就是不可以的意思。
4.什么是重載?什么是構造函數重載?在java.lang.Math類中舉出函數重載的例子?怎么才能區分兩個重載函數?
Answer:在Java 中,同一個類中的2個或2個以上的方法可以有同一個名字,只要它們的參數聲明不同即可。在這種情況下,該方法就被稱為重載(overloaded ),這個過程稱為方法重載(method overloading );構造函數重載是指當構造函數沒有構造方法時,系統會自動加上沒有參數的構造函數;
java.lang.Math中的例子:
通過函數返回值和參數類型可以區分兩個重載函數。
5.final修飾的變量不能改變,為什么如下代碼可以正常運行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
Answer:對於基本類型final使數值恆定不變;而用於對象引用,final使引用恆定不變。所以NUMBS這個對象不能再被修改指向新的對象。但它所指向的對象本身的值是可以修改的。
6.閱讀代碼EmployeeTest.java
回答:
為什么其屬性均為private
?這樣設計有什么好處?
Answer:使用private定義私有屬性是希望用戶不能隨意操作私有數據,讓用戶無法直接存取,而必須通過提供的方法進行才能存取私有數據。增加了安全性隱私性。
為Employee
類增加一個無參構造函數,調用其有參構造函數,設置name為雇員1, salary為3000, hireDay的年月日為2017年3月5日。(粘貼代碼)
為Employee
類再增加一個有參構造函數,參數只有name與salary,hideDay為當前日期。(粘貼代碼)
7.編寫函數public static boolean isMondayToFriday()
功能:判斷今天如果是周一到周五,直接輸出如“上班時間”並返回true,否則輸出“休息時間”。
提示:使用LocalDateTime, DayOfWeek
參考資料:
JAVA 8:健壯、易用的時間-日期API - ImportNew.pdf
Java8DateTimeTest.java
3.本周Commit歷史截圖
在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”,然后搜索並截圖,如下圖所示
4.PTA實驗總結
題目集:jmu-Java-03-面向對象1-基礎-封裝繼承 中的編程(5-1, 5-2, 5-3)
一定要有實驗總結.
任何編程題目對我來說都好難好難,基礎好差好差,一步步來吧... 這周學會了在eclipse中快速的進行編寫set和get,點擊Source –> Generate Getters and Setters自動生成Getter和Setter方法;函數用static修飾的時候可以使用類名,其他時候不可以。