1. 程式人生 > >《Java程式設計》第五次學習總結

《Java程式設計》第五次學習總結

學號 《Java程式設計》第五次學習總結

教材學習內容總結

JAVA Fundations : 資料結構。
Java程式設計 第八版

目錄
.

  • 目錄
    • 第八章:陣列
    • 第九章:繼承

第八章 陣列

  • 陣列是物件。
  • 確定陣列中元素的地址的方法:某個元素的地址值 = 該元素在陣列中的索引值✖每個元素所佔的位元組數(根據陣列型別來確定的) + 該陣列的起始地址。
  • 一旦陣列宣告中確定了陣列的大小之後,陣列的大小就不能變化了,即:陣列能夠儲存的值的個數就不可再改變了。
  • 每個JAVA陣列都是迭代器,所以可以用 for-each 迴圈來處理陣列中的每個元素即:for(int i:array){}
  • 陣列索引值必須小於陣列的個數length。
  • 陣列物件中的length是常量,它儲存了陣列的長度。由上一條可知:陣列的最大索引值是(length-1)
  • 陣列是物件,所以當把一個數組作為形參傳遞給方法時,該方法可以改變陣列的元素值,但不能改變陣列引用本身。即:你改不了門牌號,要是你改了,其他人怎麼來找到這個人。。。但由於你有門牌號(這個“門牌號”只是影印得到的一個副本,真正的原件還在新區的房間裡放著,方便後面的人也得到這個原件的副本,從而也可以找到我)這個地址,所以你找到了這個人,你可以對這個幹些什麼,比如:約出去吃飯。
  • 物件陣列:非常類似一個概念“陣列的巢狀”,陣列A中存放著陣列B。但是,這裡的陣列A的元素裡放著的是一個一個物件的引用,即:一個一個同類型物件的地址!不是普通意義上的一個數組B。 書上的例子8.7以及我編的PP81都有著這種“巢狀”的思想!
  • 命令列實參:將在命令列輸入的 java * 1,2,3,4 中的,1,2,3,4放進String[] args 陣列,以供main程式使用。
    回到頂部

第九章

  • 繼承的目的:複用已有的軟體。
  • protected 修飾符用於繼承。各個可見性修飾符的可見性(當前同一個類中是否可以使用?同一個包內是否可以使用?子孫類是否可以使用?),如下圖。


  • super() 引用:因為構造方法不能被繼承,所以得用super()來呼叫父類的構造方法。super也可以用來呼叫父類的各個成員。子類的構造方法負責呼叫父類的構造方法。一般情況下,子類的構造方法的第一行
    應該使用super關鍵字來呼叫父類的構造方法。如果沒有這樣顯示的呼叫語句,則Java在子類的構造方法的最開始出自動呼叫不帶引數的super方法。這樣就能保證:在子類的構造方法執行完畢之前,父類會初始化完畢父類的成員變數,這樣子類就能繼承得到這些父類的成員變量了。
  • 繼承只能有一個父類,介面允許多繼承。
  • 所有的類都直接或間接的派生與Object類。所以,每個類都繼承了toString 和 equals 方法。
  • 抽象類不能例項化,它定義的抽象方法有該抽象類的子類來實現: 實現“父親”的夙願,要不然你就不是我兒子。。。。UML類圖中,抽象類是斜體。
  • 抽象方法宣告為static型別會出現矛盾:靜態方法在還沒有宣告類的物件的時候就能通過類名來呼叫,但是抽象方法如果你不在子類中實現的話,就無法呼叫呀(抽象類的抽象方法是沒有函式體的,所以一定要實現了才能去呼叫,所以不能用static修飾)。


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

有點不是太能理解:用super類呼叫父類的構造方法這一行為。基於我現在的理解,我的看法就像剛剛上面說到的:在子類中去呼叫父類的構造方法,這樣子類便可以有父類的成員變量了,所以子類不用再重複的宣告和例項化對應的成員變數。 滿足DRY(Don't Repeat Yourself.s)原則

回到頂部

程式碼除錯中的問題和解決過程

問題一:語法錯誤。編寫類的時候,不需要有像函式那樣的形參括號。

問題二:程式設計時犯了邏輯錯誤,出現了死迴圈。現象:程式進行到最後的時候就是卡死在某個地方,就是好像Died了。

問題三:使用IDEA除錯時,對toString()方法進行除錯時,不能STEP INTO 進到toString()方法中

解決方法:如圖改設定。
問題四:使用IDEA,執行時java XXXXX 輸入命令列引數args

問題五:JAVA中預設的浮點數型別是double。所以,在使用float型別時,要明顯的“說”出來,否則JAVA就認為你輸入的小數是double型的。

問題六:關於vim-plug的外掛的修改設定。

回到頂部

本週程式碼託管截圖

其他(感悟、思考等,可選)

好好學,不急,堅持下去。像vim,從最開始的不願意接受,到現在的有點意思。要堅持下去。所以,我認為學習的方式就是這樣:最開始學一個東西的時候就是死活覺得它難,死活覺得它枯燥。但是隻要挺過了那個階段,後面學起來就會稍微輕鬆一些,就是一個堅持的問題了。怎麼挺過去那個階段呢?我現在的看法是:一開始不要去就想做到有老師帶的那種程度,畢竟你是自學,所以你的目標就是以最快的方式去把它那整個流程走下來,把大體的學習框架和流程弄清,接下來就是不斷的花時間,最多兩週,就可以達到有老師帶的那種程度了。

回到頂部

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一次
第二次 弄清了物件在記憶體中的存放
第三次
第四次 684/704 1/5 通過除錯,知道了例項化過程是怎樣的
第五次 678/1120 1/6

參考資料

  • Java程式設計 第八版
  • Java2實用教程
  • java程式設計與資料結構教程 第二版