1. 程式人生 > >20172320 2017-2018-2 《Java程序設計》第八周學習總結

20172320 2017-2018-2 《Java程序設計》第八周學習總結

tail 參考答案 direct compile 繼承 定義 結果 cto 位置

20172320 2017-2018-2 《Java程序設計》第八周學習總結

教材學習內容總結

1、綁定多數情況下發生在編譯階段
2、被延遲的請求事件成為後綁定或動態綁定,後綁定的效率低於編譯階段的綁定效率
3、多態性引用:繼承方式和接口方式
4、一個引用變量可以指向有繼承關系的任何類的任何對象
5、實際將調用的方法版本取決於對象的類型而不是引用變量的類型
6、一個接口引用變量可以指向實現該接口的任何類的任何對象
7、選擇法排序通過相繼的將各值放在自己的最終位置,插入排序法是不斷地將一個新元素插入到已排好的數列子集中,直到整個數列有序排列為止
技術分享圖片
技術分享圖片

8、兩種排序都是n^2階算法,但選擇排序所執行的交換操作的次數更少,因此選擇法優於插入法
9、線性搜索從一個端點開始,以線性方式掃描整個搜索池;二分搜索從有序數列的中點開始搜索
技術分享圖片


技術分享圖片

10、若長遠的看搜索的效率不是重要問題時,線性搜索則可能是最佳選擇

教材學習中的問題和解決過程

  • 問題1:兩種排序法的比較
  • 問題1解決方案:書上說選擇排序的交換操作的次數少,所以優於插入法。但既然存在這種排列法,那麽就一定有它的優勢,在網上搜索了一下,對比了幾種排列法,發現了它相對其他幾個方法同時具有穩定,快的優勢,但不適合總量龐大的數據
    技術分享圖片
    同時還搜出了這兩個排序法效率的比較公式
    技術分享圖片
    可以看出序列越有序則插入排序所需比較次數越少;而選擇排序比較次數恒為N*(N-1)/2次,從而更進一步說明插入排列法不適合處理龐大雜亂的數據

代碼調試中的問題和解決過程

  • 問題1:PP10.5無法排序
  • 問題1解決方案:剛開始直接把第八章的DVD和movie復制過來在movie裏進行修改,結果無法排序,後來根本沒用compareTo方法,就在DVD中仿照Contact後面的compareTo進行定義,然後還有如圖這個問題
    技術分享圖片

    技術分享圖片
    仔細對照發現,DVD中沒使用Comparable接口

代碼托管

技術分享圖片

技術分享圖片

上周考試錯題總結

  • All classes in Java are directly or indirectly subclasses of the ________ class.
    A .Wrapper
    B .String
    C .Reference
    D .this
    E .Object
    分析:Java要求所有類都有父類。如果一個類不擴展另一個類,那麽它在默認情況下擴展了對象類。對象類是Java中其他類的父類。

  • In order to determine the type that a polymorphic variable refers to, the decision is made
    A .by the programmer at the time the program is written
    B .by the compiler at compile time
    C .by the operating system when the program is loaded into memory
    D .by the Java run-time environment at run time
    E .by the user at run time
    分析:多態變量可以包含許多不同的類型,但是在程序執行之前,它不知道是哪一種類型。在引用變量時,必須做出決策。這個決策是由運行時環境根據變量的最新分配而做出的。

  • Using the reserved word, super, one can
    A .access a parent class‘constructor(s)
    B .access a parent class‘methods and instance data
    C .access a child class‘constructor(s)
    D .access a child class‘methods and instance data
    E .none of the above
    分析:超級保留字提供了一種機制,用於訪問父類的方法和實例數據(不管它們是否隱藏)。此外,可以使用super來訪問父類的構造函數。

    結對及互評

點評過的同學博客和代碼

  • 本周結對學習情況
    20172327
    20172317
  • 結對學習內容
    ?教材第10章
    ?閱讀10.1-10.6章節
    ?完成課後自測題,並參考答案學習
    ?完成課後練習題
    ?完成程序設計項目:至少完成PP10.1、PP10.4、PP10.5.

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 67/67 1/4 20/20
第二周 328/395 1/5 20/40
第三周 523/851 1/6 20/60
第四周 1070/1921 1/7 20/80
第五周 608/2529 1/8 10/90
第六周 608/2899 1/9 20/110
第七周 429/3328 1/10 20/130
第八周 804/4131 1/11 20/150

參考資料

  • 《Java程序設計與數據結構教程(第八版)》
  • 藍墨雲班課
  • java裏,幾種排序方法的優缺點
  • 關於插入排序和選擇排序的比較

20172320 2017-2018-2 《Java程序設計》第八周學習總結