20142335郝昊第三周学习总结
20145335郝昊 《Java程序設計》第3周學習總結
教材學習內容總結
第四章
類與對象
-
定義:
-
對象(Object):存在的具體實體,具有明確的狀態和行為。
-
類(Class):具有相同屬性和行為的一組對象的集合,用于組合各個對象所共有操作和屬性的一種機制。 -關系:
-
從類看對象:類定義可視為具有類似性質與共同行為的對象的模板,用來產生對象。
-
從對象看類:類的產生,是實例,推廣到大量相似實例的抽象化過程。 ?
-
二者的關系:類是對象的設計圖,對象是類的實例,生成對象要先定義類。
-
特點:
- 與c語言不同,在java中,需要的功能,就可以去找一個對象,這個對象就包含這個功能,通過new建立對象,通過“文件名+.+功能”調用一些該類的功能。
- 在編譯過程中,可以定義類。回憶第二章,一個原始碼中可以有多個類定義,但只能有一個是公開類,且文檔中的主文檔名必須與公開類名稱相同。
- 可以使用標準類,類似于java.until.Scanner和java.math.BigDecimal,分別可以作為輸入函數和高精度的計算函數其中BigDecimal中可以引用plus()、substract()、multiply()、divide()等。
- 注意“==”和“=”的區別。“==”比較兩個變量儲存的值是否相同,也就是所綁的對象,對象類型。“=”是指將值賦給變量,比較的是內含值具體數值,相當于a.equals。
數組對象
-
概念:
? ? ? 數組在java語言中就是對象。
-
特點:
- 在定義數組時候不論知不知道數組長度都可以進行。如果知道具體數可以采用p95,不知道具體的數可以采用p98。
- 因為數組是對象,需要注意性質,對于數組本身來說,不能超過其索引范圍,否則會報錯。
- 對于二維數組的本質,實在數組的基礎對于每個元素,再建立一個數組,就像矩陣一樣
- 對于數組復制的相關有兩種方法,采用System.arraycopy()和Arrays.copyOf()
- 上一條就是簡單的淺層復制,而對于深層復制,則需要自己操作,需要自己自行完成復制元素。
基本類型打包器
-
概念:
? ? ? 在java中把一些基本類型變量打包成對象之中,這樣就 可以像操作對象操作原本的“基本類型”的變量
-
特點:
- 重點要在于理解把固有的“面向過程”轉換成“面向對象”,這樣對象可以提供許多功能,簡化我們的編程。
- 在對于自動裝箱、自動拆箱,可以簡便的建立對象
- 注意類似于Integer類型的有默認值,在編譯的時候需要注意。
字符串對象
-
概念:
? ? ? ?在java中,字符串本質是打包字符數組的對象,是java.lang.String.
-
特點:
- 通過一些如Byte.parseByte(number)等方法將字符串轉換為整數、浮點數等基本類型。
- 在字符串池,以" "包括的字符串內容相同,無論在源代碼中出現幾次,JVM都只建立一個String實例,都在字符串池中維護。
- 利用+連接字符串,會產生新的String實例。
- 使用javac指令沒有指定-encoding選項時候,會使用操作系統默認編碼。
查詢API文件
-
方法:
- 通過java官方網站;
- 直接通過搜索引擎搜索對應的類,就會顯示文件的說明了。
- 還可以在windows下載CHM格式的javaAPI。
第五章
何謂封裝
-
概念:
? ? ? ?分裝實際上使用方法將類的數據隱藏起來,控制用戶對類的修改和訪問數據的程度,僅對外提供公共訪問方式,隱藏對象細節,將對象當作黑箱進行操作。
-
特點:
- 自己可以定義類,創建屬性,方法,如果其它需要用到相應的功能,只需要拿著“類設計圖” 設計一個對象實例,,再根據公開提供的提供的方法,就可以使用相應的功能。
- 封裝對象類似于c語言中的模塊化編程,在java中做到了一類一文件,而且在java中更靈活方便。
- 可以像書中提到的,使用private對關鍵信息進行隱藏,設置訪問數據的程度,防止用戶惡意使用。
語法細節
-
public:
- 用在類前,表示的這個類是公開類,這樣就可以在其他包的類中使用。
- 用在方法前,這樣就表示其它包中的方法可以直接調用這個方法。這里需要注意的是,如果類上沒有聲明public關鍵字,類中的方法就算是public,也等于是包權限了,因為類本身是包權限,其它包就根本無法使用類,更別說當中定義的方法。
- 用在函數前,這表示其它包中的類可以直接調用這個構造函數。
- 用在成員變量前,表示這個成員變量是公開的,這樣別人可以直接調取你類中的變量。
-
private:
- 用在成員變量前,這是一種保護機制,不讓自己這個類以外的方法去隨便使用存取這個類的數據,可以保護私有數據,只能通過調用自己類的方法去操縱這些數據,這樣會很安全。
- 也可以用在方法或構造函數聲明上,一般用在內部聲明類中
-
方法重載:
- 根據自己的理解重載就好比是用相同的詞表達多種不同的含義。
- 只要參數類型和個數不同,就可以定義多個構造函數,可用一致的名稱來調用類似功能的方法。
- 與返回值無關,構造函數不一定關心它的返回值,可能只是想利用其中的某個功能。
-
this與super:
- this關鍵字可以出現在類中的任何地方,在對象建立后為“這個對象”的參考名稱。但是在被聲明為static的地方不能這樣使用。
- super一般用在父類中,指代父類對象的參考名稱。
-
final:
- 用在類前,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾
- 用在方法前,使用final方法的原因有兩個:第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。
- 用在成員變量前,修飾變量是final用得最多的地方
-
注意:
- 在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在以后不會用來繼承或者出于安全的考慮,盡量不要將類設計為final類。
- 因此,如果只有在想明確禁止 該方法在子類中被覆蓋的情況下才將方法設置為final的。注:類的private方法會隱式地被指定為final方法。
- 對于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。
-
static:所有對象公有的
- static用于修飾成員變量和成員函數
- 訪問慣例:類名.static成員
- 注意:由于static成員是屬于類,而非個別對象,所以在static成員中使用this,會是一種語意上的錯誤。
-
import static
與import一樣,這樣做是為了偷懶,但要注意名稱沖突的問題。
-
變長參數
在調用方法時,如果自變量的個數事先無法決定,則可以在聲明參數列時在關鍵字后加上...,實際上不定長度自變量是編譯程序蜜糖。
-
內部類
可以在內中再定義類,內部類亦可以使用public、protected、private聲明。一個被聲明為static的內部類,通常是將外部類當作名稱空間。
教材學習中的問題和解決過程
第四章
在學習第四章的時候首先對于最開始的類與對象的關系有著很大的漏洞,因為如果搞不清楚這兩者,在對于第四章第五章學習的會非常困難,后來看了老師的學習指導后發現要把握住java語言是面向對象。當這樣后就了解了許多,大概也就了解color=this.color等。
后來不太了解對于java基本的打包的意義不太理解,后來發現,我們目前所編譯的只是一些簡單的程序,不存在很大的問題,對于是否打包沒有很大的作用,但是如果用java語言去創造一個軟件的時候,就需要用到打包等知識,這樣很方=方便程序員對程序的修改和設計。
還有對于本章出現的增強式for語法,在開始看書的時候不太了解,后來用eclipse編譯了幾遍后了解了一些,后來發現好像記住增強式for語法似乎容易一些。
還有本章的一個問題,如何判斷建立了幾個Iteger實例,還是很分不清楚,后來采用書上的方法,對于不懂得程序,采用畫圖法,這樣很清楚就判斷出結果。
第五章
在學習也只是簡單的了解了他的概念,但是深層次卻不太懂,后來看了視頻以后就有所了了解,自己可以定義類,創建屬性,方法,如果其它需要用到相應的功能,只需要拿著“類設計圖” 設計一個對象實例,,再根據公開提供的提供的方法,就可以使用相應的功能。 封裝對象類似于c語言中的模塊化編程,在java中做到了一類一文件,而且在java中更靈活方便。就是隱藏對象細節,將對象做黑箱操作
在細節語法細節中,對于一些public、private、this與super等,在前四章的代碼學習中都有用過,但是了解的卻不是很詳細,學完第五章后就很系統的了解了。但是對于final存在著知識欠缺,通過看java學習視頻也學習到了很多 在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在以后不會用來繼承或者出于安全的考慮,盡量不要將類設計為final類于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。
代碼調試中的問題和解決過程
其中在于操作數組中對于二維數組的理解還欠缺一些,后來將其理解成一維數組每個元素在索引一個數組就方便了理解。
同樣在第五章有個知識點,在創建對象之后、調用函數之前,若有想執行的流程,可以使用{}定義。
剩下的所有代碼也全部敲了一遍,有了全新的認識,已經全部傳到了開源中國,代碼托管里了。
其他(感悟、思考等,可選)
其實感覺這周的學習量挺大的,要自學兩個章節,而且都是比較陌生抽象難懂的知識,接受起來比較慢。
從最開始的java平臺概論,JDK到IDE的介紹,基礎語法的運用到現在的類與對象,封裝。前三章的知識其實都不是特別難。但到第四章就感覺逐漸接觸java程序設計的核心知識了。在經過不斷的重復后,我對這兩章的知識點已經掌握了,把書上所有的代碼都敲了一遍,世上無難事,是怕有心人。任何事情,萬事開頭難,但只要堅持下來了,一定會受益匪淺!!比如托管代碼,最開始覺得很難,學會了后就會很輕松。
學習第四章第五章,最重要的是要有能將抽象問題具體化的能力,將其建立成一個模型,這樣才能方便理解。
?
在寫博客方面也在婁老師上周的指導下,這周寫完博客認真的修改了一遍,希望還可以有提高。
學習進度條
?
| ? | 代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 |
| 目標 | 3500行 | 28篇 | 300小時 | ? |
| ?第一周 | 200/200 | 1/1 | 10/10 | ? |
| ?第二周 | ?300/500 | ?1/2 | ?20/30 | ? |
| ?第三周 | ?300/800 | ?1/3 | ?20/50 | ? |
| ?第四周 | ? | ? | ? | ? |
| ?第五周 | ? | ? | ? | ? |
?
?
?
?
參考資料
- Java學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
- ...
轉載于:https://www.cnblogs.com/20145335hh/p/5298955.html
總結
以上是生活随笔為你收集整理的20142335郝昊第三周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu下实现eth0与wlan0完
- 下一篇: 博弈论经典例题总结