Java 第三周总结
生活随笔
收集整理的這篇文章主要介紹了
Java 第三周总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.本周學習總結
2.書面作業
1.代碼閱讀
public class Test1 { private int i = 1;//這行不能修改 private static int j = 2;public static void main(String[] args) {geti();Test1.getj();}public static void geti() {Test1 test=new Test1();System.out.println(test.i);}public static void getj() {System.out.println(j);}}以上代碼可否編譯通過?哪里會出錯?為什么?嘗試改正?如果創建3個Test1對象,有內存中有幾個i,幾個j?
- 編譯無法通過,i會報錯,它不是一個靜態的對象。第二行不能更改,所以增加Test1 test=new Test1();
- 創建了三個Test1對象,內存中有三個i,一個j。因為靜態對象的每個類就只有一個存儲空間,三個j都是同一個。但是i不是靜態對象,所以每次都會創建新的i,所以有三個。
2.構造函數有什么用?其編寫格式是什么?如果一個類不寫構造函數,它有構造函數嗎?如果一個類中只有帶參的構造函數,它有沒有不帶參數的默認構造函數?
- 構造函數最大的好處是方便,能夠便捷的快速調用編寫好的一些程序,規則,同時也能區不同類型,用途的不同代碼。
- 編寫格式 public(或者private)類名(有無參數都行){}構造函數不寫返回類型。
- 沒有。如果一個類,沒有定義構造函數,那么系統就會默認有一個無參的構造函數。但是如果定義了一個有參函數,為了保證正確性,系統不會創建無參構造函數。這時候如果還想允許無參構造,就必須顯式的聲明一個。
3.使用java.lang.Math類的函數時,為什么不需要new?如果new Math()會產生什么錯誤?
- Math()是外部類,Math()類里面的方法是靜態的。所以直接使用類訪問就可以了。
- 如果new Math(),那么也找不到math下面的其他方法。
4.什么是重載?什么是構造函數重載?在java.lang.Math類中舉出函數重載的例子?怎么才能區分兩個重載函數?
- 重載,簡單來說就是函數活著方法有相同的名稱,但是參數列表不相同的情況。可使函數、運算符等處理不同類型數據或接受不同個數的參數。
- 函數名可以相同,但是特征標必須不同。用函數名來確定函數的不同,用特征標來確定重載函數的不同。同時,參數的順序,類型不同也可以確定重載函數的不同。
5.final修飾的變量不能改變,為什么如下代碼可以正常運行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;- 對于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。這里引用的是int型的變量,但是他的內容還是可以改變的,所以代碼可以正常運行。輸出NUMBS[2]的答案為1;
6.閱讀代碼EmployeeTest.java,回答:
(1)為什么其屬性均為private?這樣設計有什么好處?
- 私有的,只能對自己使用,對別的類是不能訪問的,也就是說對于別的類來說是隱藏不可見的。如果所有方法都public,萬一被調用了本來應該封裝的方法,那么很容易造成整個相關程序的修改。危害很大。
(2)為Employee類增加一個無參構造函數,調用其有參構造函數,設置name為雇員1, salary為3000, hireDay的年月日為2017年3月5日。
public Employee(){this("雇員1",3000.0,2015,3,5);}(3)為Employee類再增加一個有參構造函數,參數只有name與salary,hideDay為當前日期。
public Employee(String n, double s, LocalDate hireDay){name = n;salary = s;hireDay = LocalDate.now();}7.編寫函數public static boolean isMondayToFriday()
功能:判斷今天如果是周一到周五,直接輸出如“上班時間”并返回true,否則輸出“休息時間”。
public static boolean isMondayToFriday(){LocalDateTime now = LocalDateTime.now();DayOfWeek dayOfWeek = now.getDayOfWeek();System.out.println(dayOfWeek);if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY)return true;return false;}if(isMondayToFriday())System.out.println("上班時間");elseSystem.out.println("休息時間");提示:使用LocalDateTime, DayOfWeek
參考資料:
JAVA 8:健壯、易用的時間-日期API - ImportNew.pdf
Java8DateTimeTest.java
3.碼云
4. PTA實驗總結
- 初始化塊的修飾符只能是static,使用static修飾的初始化塊被稱為靜態初始化。初始化塊里的代碼可以包含任何可執行性語句,包括定義局部變量 ,調用其他對象的方法,以及使用分支,循環語句等。{}單純被一個大括號括起來的叫初始化塊,static{}叫做靜態初始化。
- 靜態初始化的等級是最高的,會最優先執行
- Shift+Alt+S,Generate toString()自動補全toString;Generate Getter and Setters,自動添加。
- Private ,編程語句在模塊級別中使用,用于聲明私有變量及分配存儲空間。使用private修飾符可以完全隱藏類的成員,使得不能從類外直接訪問它們。相對的,使用public修飾符允許任何類訪問類的成員。
- 在main函數里調用新建的類中定義的函數,必須先new一個對象,然后對這個對象進行操作。
- 這次的實驗感覺不會太難,而且數量也比較適中,感覺這樣挺好的。。。
轉載于:https://www.cnblogs.com/ycll/p/6529410.html
總結
以上是生活随笔為你收集整理的Java 第三周总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis常用数据结构解析
- 下一篇: 英文构词法 —— ant、ent 后缀