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

1.本週學習總結

1.1 寫出你認爲本週學習中比較重要的知識點關鍵詞

類 對象 封裝性 this private 構造函數 package importjava

1.2 用思惟導圖或者Onenote或其餘工具將這些關鍵詞組織起來。

2. 書面做業

1.以面向對象方式改造數據結構做業'有理數'(重點)

注意:屬性必須修飾爲爲privategit

1.1 截圖你主要代碼(須要在程序中出現你的學號和姓名)並粘貼程序的git地址。



https://gitee.com/hellolv/java201621123078編程

1.2 對比你的代碼與歷程的代碼,說明面向對象編程與面向過程編程有何區別?

面向過程編程是一種以過程爲中心的編程思想,分析出解決問題的步驟,而後用函數把這些步驟一步一步實現。面向過程編程,數據和對數據的操做是分離的。數組

面向對象編程是將事物對象化,經過對象通訊來解決問題。面向對象編程,數據和對數據的操做是綁定在一塊兒的。數據結構

2. 構造函數與初始化塊

2.1 結合PTA 5(構造函數與toString)說明構造函數有什麼用?其函數格式有何特徵?

做用:函數

  • 在構造函數過程當中可以初始化對象的值
  • 能建立對象,給其空間。

構造函數能夠是有參數的也能夠是無參數,可是在構造函數的過程當中名稱和類的名必需要一致,苟澤構造函數沒有返回類型。工具

2.2 若是一個類不寫構造函數,它有構造函數嗎?若是一個類中只有帶參的構造函數,它有沒有不帶參數的默認構造函數?

  • 若是類不寫構造函數,系統會默認給一個無參構造函數。
  • 若是定義了一個有參的構造函數,爲了保證正確性,系統不會建立無參構造函數。學習

    2.3 查看String類的源代碼,找出3個看得懂的String類的構造函數,並使用本身的話描述這3個構造函數的區別。


    圖一:該String構造函數中,參數爲char數組,使用java.utils包中的Arrays類複製數組

    圖二:該String構造函數是令value字符數組引用空字符串。

    圖三:該String構造函數直接令value字符數組引用original的value字符數組地址,並把其hash值拷貝過來。this

    2.4 結合PTA(構造函數與初始化塊)說明初始化塊與構造函數的異同。並說明,初始化塊與構造函數誰先執行?初始化塊與靜態初始化塊有何不一樣,誰先執行?

3.代碼分析:Math類

3.1 使用java.lang.Math類的方法時,爲何不須要new出一個Math對象,而後調用該對象上相應的方法?

對於java.lang.Math類都爲靜態變量與方法,並不須要new出一個Math對象,再調用該對象上相應的方法。code

3.2 若是new Math()會產生什麼錯誤?嘗試閱讀Math類源代碼,分析緣由。

會出現「The constructor Math() is not visible」的錯誤提示,由於java.lang.Math類的函數在使用時不須要重載。

3.3 進一步:你以爲什麼樣的對象須要new出來才能用,調用什麼方法時沒必要建立相應對象就可使用?(重點檢查)

在引用數據類型在定義實例時須要new實例對象,經過new能夠調用含參的和不帶參的函數,而對於基本數據類型不須要new能夠直接定義,靜態方法屬於類自己,而非類的實例,因此能夠用「類名.方法名」直接調用沒必要建立相應對象就可使用。

4. 重載Overload

4.1 什麼是重載?什麼是構造函數重載?怎麼才能區分兩個重載的方法?

  • 同一個類中的2個或2個以上的方法能夠一同一個名字,只是它們的參數聲明不一樣便可,在這種狀況下,該方法就被稱爲重載,這個過程稱爲方法重載。

    參考百度知道

  • 舉個例子
public  Student(){
   private String name;
   private String age;
public Student(){
}
public Student(String name){
 this.name = name;
}
public Student(String name,String age){
this.name = name;
this.age = age;
}

//上面三個函數都是Student類的構造函數。第一個是無參的,第二個有一個參數,第三個有兩個參數。這就是構造函數的重載

  • 區別方法:看方法或函數的參數是否相同。

4.2 在java.lang.Math類中舉出1個方法重載的例子?

經過查看jdk文檔中有關於Math類的abs能夠看出在Math()函數中abs的方法有不少並且不盡相同,參數不一樣,調用的方法也不一樣,因此組中輸出的結果也是不一樣的。

5. 代碼閱讀: final

final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;

由於final修飾的時引用類型的變量,變量的值在運行過程當中不能不被修改,因此代碼依然能夠正常運行,此外,NUMBS存儲的時數組的首地址。

6. Java8中的時間日期類:編寫函數public static boolean isMondayToFriday()

功能:判斷今天若是是週一到週五,返回true,返回false。main函數中調用該函數,若是爲true則輸出「工做日+姓名學號」,不然輸出"休息+姓名學號"。
截圖:關鍵代碼。
提示:使用LocalDateTime, DayOfWeek類

7. 封裝

7.1 結合PTA(形狀),請用本身的話簡單總結一下面向對象中封裝是什麼意思?有何好處?

顧名思義,封:封閉,裝:裝起來,將具體的實現細節裝到一個容器中,並封閉起來,防止容器外部直接訪問容器內部的實現細節,僅公開暴露指定的訪問路徑。正如長方形類Rectangle,其中width, length這些屬性是私有的,圓形類Circle,屬性radius是私有的。

好處:

  1. 隔離性,對象內部修改後,在公開暴露指定的訪問路徑不變的狀況下,外部訪問它的對象是無需修改的。
  2. 可複用性:
    被封裝後的對象能夠被外部多個對象訪問,而無需爲每一個外部對象去指定不一樣的服務對象。
  3. 可讀性:
    被封裝後的對象的名稱(如:程序集名,類名,方法名)若是命名恰當,那麼就能在不看裏面的實現細節的前提下,瞭解該對象的做用。

    7.2 和封裝有關的關鍵字有哪些?

  • private 只容許內部進行訪問,外部沒法訪問。
  • public 對全部部分均可見,公共全部
  • default 默認的、無符號
  • protected 保衛的

8. 結對編程實踐(未完成,0分)

找一個水平相近的同窗完成1-2題實驗題。開始編程前,可先對內容進行討論。
寫出體驗報告,包括如下內容:1.對方姓名。2.所完成的題目。3.感想。4.照片(上次不少同窗並未貼照片,請貼上)

個人搭檔是蘇志穎同窗,咱們所完成的是PTA的上面的第四題,在編寫代碼的過程當中讓我感覺到兩我的一塊兒編寫效率可以獲得很大的提升,在我編寫過程當中,可以及時發現個人問題,並可以一塊兒討論,一塊兒解決問題。

3. 碼雲及PTA

3.1. 碼雲代碼提交記錄

在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖

3.2 截圖PTA題集完成狀況圖

須要有兩張圖(1. 排名圖。2.PTA提交列表圖)

3.3 統計本週完成的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 0 0 0 0
2 280 280 5 5
3 530 250 9 4
相關文章
相關標籤/搜索