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

1.本週學習總結

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

面向對象的思想 對象 java

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

掌握的還不夠深刻,知識框架體系還不完善,望見諒.....git


2.書面做業

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

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

git地址編程

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

  • 面向對象的編程將成員屬性私有化,成員方法公有化,將類進行封裝,體現編譯的總體性;
    面向過程的編程實現思考問題、解決問題的歷程,調用一個個零散的函數來實現編譯

2.2構造函數與初始化塊

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

  • 函數格式特徵:public 類名() { .............. }
  • 經過構造函數實現構造對象;PTA 5(構造函數與toString)實現了Person類的無參構造函數:public Person(){ System.out.println("This is constructor"); System.out.printf("%s,%d,%s,%d%n", name,age,gender,id); }
    實現了Person類的有參構造函數:public Person(String name , int age , boolean gender ){ this.name = name; this.age = age; this.gender = gender; }完成對name age gender的賦值

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

  • 當一個類不寫構造函數時,會有一個默認存在的無參構造函數,故而當一個類中沒有定義構造函數時,一樣能夠建立該類的對象;
  • 當一個類中只有帶參的構造函數時,它就不會有不帶參數的默認構造函數

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

  • 前兩個函數爲無參構造函數,第三個函數爲有參構造函數;每一個構造函數實現String中的相應功能各不相同

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

  • 靜態初始化塊運行一次;構造函數和實例初始化塊均運行兩次;那麼顯而易見,函數的執行順序:1)靜態初始化塊
    2)實例初始化塊 3)構造函數

2.3代碼分析:Math類

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

  • Math類中的成員變量和成員方法都是靜態的(static),能夠直接調用而不該使用new,使用new反而出現相應的錯誤

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

  • 使用new Math()編程結果提示內容不可見;

  • Math()是一種頂級類(在其它類的外面聲明一個類時,Java就認爲該類是一個頂級類),無需再new建立

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

  • 當對象內部不是靜態類(static)時,才使用new來建立相應的對象;當對象須要被調用靜態類(static)時,就沒必要建立相應對象就可使用(Math()...)

2.4重載Overload

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

  • 重載即函數(或方法)有着一樣的函數名稱,但自變量或者參數不一樣;數組

  • 構造函數重載即保證每一個構造函數的參數類型或者參數個數不一樣那麼就能夠在一個類中定義多個函數;安全

  • 區分兩個重載:在於相應參數的數量、參數的順序和參數的類型的不一樣所在數據結構

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

  • abs(int a) 返回int 值的絕對值;
  • abs(long a) 返回long 值的絕對值

2.5代碼閱讀: final

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

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

  • final在基本類型上保證數值的惟一不變性;而final在對象引用上保證引用對象的惟一不變性;那麼本題中NUMBS的對象不能修改爲新的對象,而指向對象的數值能夠實現相應的修改。

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

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

  • 經過修改參考代碼獲得

2.7封裝

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

  • 封裝即將相應的屬性私有化,提供公共的方法訪問私有屬性,而類就是將對象的屬性和行爲封裝起來的載體,類一般對客戶隱藏相應的實現細節;
    正如本題PTA(形狀):
    長方形類-類名:Rectangleprivate屬性:int width,int length
    圓形類-類名:Circleprivate屬性:int radius
    本題長方形類中的長寬屬性不爲用戶所見;圓形類的半徑屬性不爲用戶屬性;
    而計算長方形、圓形的周長public int getPerimeter()以及面積public int getArea()的方法則是爲用戶可見的;
    封裝充分體現java面向對象的特徵,提升代碼的重複使用率,使編譯的代碼更加簡潔;與此同時,屬性隱藏和方法公開更體現代碼的安全性。

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

  • private數據私有化,成員變量或成員方法只能在本類中被使用,在子類或其餘包的類都是不可見的;
  • public數據公開化,成員變量或成員方法用public修飾在任何地方都是可見的;
  • default數據默認化,在成員變量或成員方法沒有聲明的狀況下,Java會自動給這些沒有聲明權限的成員一個默認的權限default,這個權限則不能實現跨包,該成員變量或成員方法只能在本類或該類的子類調用;
  • protected數據受保護,若是在成員變量或成員方法用protected修飾的,那麼該成員變量或成員方法在同包的類或子類是可見的,若是要實現跨包,那麼在子類纔可見。

關鍵字的詳細內容參考百度百科工具

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

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

  • 結對對象:普天

  • 完成題目:PTA7-3(形狀)

  • 感想:在老師上完實驗課的基礎上,首先咱們統一步調,先實現類的建立,再而無參構造函數和有參構造函數的建立,經過快捷鍵shift+alt+s使每一個屬性生成setter、getter方法以及覆蓋toString函數的生成;接下來就是主函數的編寫(main),咱們經過商討決定建立字符串數組將周長和、面積和放入其中,進而實現字符串向Integer類的轉化,最後就是實現整合,按正確格式輸出。本次結對編程雙方沒有太多的想法歧義,大致的框架基本統一,在main函數中的語句使用上仍是有各自的想法,但已經逐漸向「1+1>2"發展,這是一個很好的勢頭。


3.碼雲及PTA

3.1碼雲代碼提交記錄

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

3.2截圖PTA題集完成狀況圖

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

3.3統計本週完成的代碼量

須要將每週的代碼統計狀況融合到一張表中,可以使用最新版的代碼統計工具的-history參數,詳細用法見項目wiki地址。

  • -history參數不記錄以往的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
第一週 189 189 10 10
第二週 304 304 9 9
第三週 557 557 10 10
相關文章
相關標籤/搜索