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