第三週做業

1. 本週學習總結

初學面向對象,會學習到不少碎片化的概念與知識。嘗試學會使用思惟導圖將這些碎片化的概念、知識點組織起來。請使用工具畫出本週學習到的知識點及知識點之間的聯繫。步驟以下java

1.1 寫出你認爲本週學習中比較重要的知識點關鍵詞,如類、對象、封裝等

  • 類管理機制有包機制,Import package 徹底限定類名 -d. -cp 類 對象 封裝 public private 構造函數this等

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

2. 書面做業

1.以面向對象方式改造數據結構做業'有理數'(重點)注意:屬性必須修飾爲爲private

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

git地址git

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

  • 面向過程是分析出解決問題所需的步驟而後利用代碼實現步驟。而面向對象是把問題分解成各個對象,描述某個事物在整個解決問題途中的行爲。

    2. 構造函數與初始化塊

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

  • 定義類型後,爲了使用該類型,必須把類型具體化。而構造函數就是從定義除非,創建與定義相對應的對象。

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

  • 若是一個定義類無構造函數,在Java中會默認存在無參構造函數

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

  • ![](http://images2017.cnblogs.com/blog/1123275/201710/1123275-20171001201103762-1383923003.png)
       兩個String對象,新對對象與原來的對象指向同一個地方(內存)
  • ![](http://images2017.cnblogs.com/blog/1123275/201710/1123275-20171001201139309-106111911.png)
       字符數組中的字符複製生成字符串
  • ![](http://images2017.cnblogs.com/blog/1123275/201710/1123275-20171001201324622-1174180630.png)

參數爲char數組,用arrays複製編程

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

  • 初始化塊:是給全部的對象進行初始化,也就是說,全部的對象都會調用一個代碼塊,只要對象一創建,就會調用這個代碼塊。

    構造函數:是給與之對應的對象進行初始化,它具備針對性。
    初始化塊先於構造函數執行。
    靜態初始化塊先於初始化塊執行,而且只在首次加載中執行一次,而初始化塊每調用一次就執行一次。數組

    3.代碼分析:Math類

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

採用靜態方法,不會參與對象實例化的過程,和對象建立沒有關係,而且靜態的方法都是經過類型直接引用的,和創不建立對象無關。數據結構

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

  • 從類源代碼中能夠看出Math()定義爲私有private,是不能被外部調用的。

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

  • 建立對象的類是屬於非靜態的類,而且其方法都是非靜態時,用new。

    4. 重載Overload

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

    重載就是在類中能夠建立多個方法,它們具備相同的名字,但具備不一樣的參數和不一樣的定義。構造函數重載:構造函數具備相同的名字,而參數的個數或參數類型不相同。能夠經過參數來區別這兩個重載方法函數

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

返回double的值的絕對值。工具

5. 代碼閱讀: final

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

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

  • 在引用對象時,final不改變的是引用的對象,對於這個被引用的對象的內部內容的更改是沒有限制的。因此能夠正常運行。

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

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

JAVA 8:健壯、易用的時間-日期API - ImportNew.pdf
Java8DateTimeTest.javathis

7. 封裝

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

  • 封裝就是私有化,定義爲本身的東西,不容許外人來用,也就是不容許別的類調用

    本題中,像長方形的屬性width與length和圓形的radius都被封裝了起來,封裝的好處就是不讓外界知道太多複雜的東西。code

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

  • private     default     protected     public。

    8. 結對編程實踐

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


個人結對對象是林東財。
咱們討論的題目是有理數,編程須要不少次的練習才能愈來愈熟練和避免錯誤。並且真的人多力量大。

3. 碼雲及PTA

3.2 截圖PTA題集完成狀況圖

3.3 統計本週完成的代碼量

| 總代碼量 | 新增代碼量 | 總文件數 |新增文件數| | 411 | 411 | 27 | 9 |

相關文章
相關標籤/搜索