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

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

照片 資料 總結 指向 cep 選擇 但是 接口實現 mod

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

教材學習內容總結

1.關於綁定

  • 綁定:在執行程序時產生一個請求事件,需要執行一段代碼來來完成方法調用,即一個方法調用與一個方法定義的綁定。
  • 後綁定:後綁定就是延遲綁定的情況。(後綁定的效率低於編譯階段的綁定效率)

2.由繼承實現多態性

  • 一個引用變量可以指向由繼承關系的任何類的任何對象;
  • 實際將調用的方法版本取決於對象的類型而不是引用變量的類型;

3.利用接口實現多態性

  • 接口引用變量可以指向實現該接口的任何類的任何對象。
  • 使用接口引用變量時,只能調用定義在接口中的方法,其他的不可調用,如果已知這樣的方法調用是有意義的,則需要進行對象類型轉換
  • 接口名也可以用作方法參數的類型,使得任何實現同一個接口的類對象都可以作為參數傳給的方法。

4.排序

  • 排序有兩種方法,分別為選擇性排序和插入性排序
  • 選擇性排序:掃描整個數列找到最小值並與數列中第一個位置的值交換,如此循環,直到數列有序排列。
  • 插入法排序:從左往右第一次排序從第二個數開始,與之前的數比較,在之前的數中合適的位置插入不斷重復。
  • 比較:兩者的效率相同,但是選擇法排序的實際交換次數比插入法排序少,所以在兩者之間選擇的話,選擇法排序會更好一些。

5.搜索

  • 線性搜索:從一個端點開始,以線性方式掃描整個搜索池,就是按照先後順序依次進行搜索,傳統意義上的依次搜索。
  • 二分搜索:對一組已經進行過排序的數據進行二分搜索,從中間分開,依次尋找更接近目標的區間,最後達到搜索目標。
  • 比較:
    (1)二分搜索的前提是數據已經經過了排序,如果沒有進行排序,則考慮選擇線性搜索。
    (2)在滿足二分搜索的前提下,如果數據量較大,則二分搜索需要的時間可能會較少,即效率更高。
    (3)在數據已經排序(升或降)的基礎下,二分效率更高;在以數組形式出現時,線性效率更高。

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

  • 問題1:實際調用的方法版本取決於對象的類型而不是引用變量的類型。此話什麽意思?
  • 問題1解決方案:詢問了學長,並且具體的做了如下的一個實驗,能夠較為清楚的解釋這句話。
    ···
    public class Polymorphism {
    public static void main(String[] args) {
    //既然是多態,java 中重載和重寫都是多態的體現,你問的這句話肯定不屬於重載則用重寫來解釋
    // 這裏聲明了一把槍,變量為gun,但他卻指向了一把Ak47對象,也就是說 gun雖然是Gun的引用,但實際是一個Ak47對象
    //那麽gun.shot其實調用的是Ak47.shot 而不是Gun自己的shot
    Gun gun = new Ak47();
    gun.shot();
    }
    }
    class Gun {
    public void shot() {
    System.out.println("突!");
    }
    }
    class Ak47 extends Gun {
    public void shot() {
    System.out.println("突!突!突!突!突!");
    }
    ···}
  • 問題2:對接口實現多態性那一部分理解的不是很好
  • 問題2解決方案:尋找資料的時候發現了這樣一個問答,雖然說沒有具體指導問題中的代碼,但是根據他們的問答確實很好的幫助了我理解接口實現多態性。
    技術分享圖片
    技術分享圖片
    技術分享圖片
    上圖問題的連接

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

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX
  • ...

代碼托管

腳本截圖

上周考試錯題總結

    1. Inheritance through an extended (derived) class supports which of the following concepts?
      A . interfaces
      B . modulary
      C . information hiding
      D . code reuse
      E . correctness
      解析 通過擴展一個類並繼承它,新類不必重新實現任何這些繼承的方法或實例數據,從而節省了程序員的工作量。 因此,代碼重用是為了您的需要擴展它而重用其他代碼的好處。
  • 2 . A variable declared to be of one class can later reference an extended class of that class. This variable is known as
    A . protected
    B . derivable
    C . cloneable
    D . polymorphic
    E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
    解析:多態意味著變量可以有多種形式。 在普通情況下,Java被強烈定義,即一旦聲明為某個類型的變量永遠不會變為不同的類型。 這是一個例外,多態變量可以是任何類型的派生類(盡管不是同時,變量可以從一種類型變為另一種類型)。
    原因:未能正確理解題意,以為是要在變量前什麽類型。
    1. Which of the following is an example of multiple inheritance?
      A . A computer can be a mainframe or a PC
      B . A PC can be a desktop or a laptop
      C . A laptop is both a PC and a portable device
      D . A portable device is a lightweight device
      E . Macintosh and IBM PC are both types of PCs
      解析:多重繼承意味著一個給定的類繼承了多個父類。在上面列出的那些中,筆記本電腦繼承了來自PC和便攜式設備的特性。A,B和E中的答案都是單個繼承的例子,其中一個班級至少有兩個孩子(在A中,計算機有兒童大型機和PC,B,PC有兒童臺式機和筆記本電腦,E,PC有孩子Macintosh和IBM PC)。答案D表示一個類的屬性。
    1. 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
      解析:這道題目是在問是在什麽階段確定多態變量所引用的類型,這也是屬於第十章內容。對於多數情況下的這種請求,這種綁定是發生在編譯階段,但是對於多態性引用,這種綁定要延遲到程序運行才能執行,並且要綁定的方法取決於當時引用變量所引用的對象,這種被延遲的請求事件被稱為後綁定或動態綁定。

      結對及互評

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 基於評分標準,我給本博客打分:XX分。得分情況如下:xxx

  • 參考示例

點評過的同學博客和代碼

  • 本周結對學習情況
    • 結對同學學號1
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...
  • 上周博客互評情況(只要鏈接,具體點評放相應博客下)

    • 學號1

## 學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

參考資料

  • Java學習筆記(第8版)

  • 《Java學習筆記(第8版)》學習指導
  • ...

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