java 溫故知新 第五天 面向?qū)ο?/h2>

面向?qū)ο?/h4>
  • 通過屬性,行為描述現(xiàn)實(shí)世界的事物。而JAVA一個(gè)類可以表述一個(gè)事物,事物的屬性對(duì)應(yīng)類的成員變量,事物的行為對(duì)應(yīng)類的成員方法 。

類與對(duì)象

  • 類是一組相關(guān)屬性的集合 例如:學(xué)生
  • 對(duì)象是事物的具體體現(xiàn) 例如:王生華同學(xué)

對(duì)象的內(nèi)存圖

  • 編譯:通過bin目錄下的javac.exe工具將.java文件轉(zhuǎn)換為.class文件
  • 運(yùn)行:通過bin目錄下的java.exe工具將.class文件加載到方法區(qū),方法區(qū)相當(dāng)于代碼倉庫。
  • 內(nèi)存圖
    s1.png

1.對(duì)象的成員變量在堆內(nèi)存里面
2.對(duì)象的成員方法是在棧內(nèi)存中被調(diào)用,調(diào)用的時(shí)候方法入棧,調(diào)用完方法出棧
3.對(duì)于沒有被使用的對(duì)象,垃圾回收機(jī)制會(huì)自動(dòng)回收內(nèi)存
4.java中的調(diào)用遵循一個(gè)原理:后出現(xiàn)的調(diào)用先出現(xiàn)的。

靜態(tài)的元素是程序開始運(yùn)行的時(shí)候就加載好的,當(dāng)所有靜態(tài)元素(靜態(tài)成員變量,靜態(tài)成員方法)都加載好后,再由各線程開啟各自的業(yè)務(wù)。
??main方法就是一個(gè)線程。main方法開始執(zhí)行的時(shí)候,所有靜態(tài)元素都已經(jīng)存在了。所以在main方法中,靜態(tài)之間可以肆意相互調(diào)用。當(dāng)然其他運(yùn)行的線程也是一樣,而我們能實(shí)際感受到的都是運(yùn)行是的線程,所以可以說靜態(tài)元素之間是可以相互調(diào)用的。
??對(duì)于非靜態(tài)成員變量,是在線程業(yè)務(wù)執(zhí)行過程中生成的,只要類進(jìn)行了實(shí)例化,就可以被調(diào)用。
??對(duì)于非靜態(tài)的成員方法,本類的方法屬性可隨意調(diào)用,他類如果是非靜態(tài)類,實(shí)例化后可調(diào)用,靜態(tài)類隨意調(diào)用

5.main方法是游離于所有類之外的,所有外部類對(duì)main方法可見。

局部變量與成員變量

  • 局部變量:方法內(nèi)、方法聲明上,棧內(nèi)存,有默認(rèn)初始化值,隨著方法的調(diào)用而存在,方法的調(diào)用完畢而消失
  • 成員變量:類中方法外,堆內(nèi)存,使用前必須主動(dòng)初始化,隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
  • 注意:因?yàn)榫植孔兞亢统蓡T變量并沒有存儲(chǔ)在一塊內(nèi)存區(qū)域里面,所以成員變量可以跟局部變量重名,使用時(shí)遵循就近原則。

基本數(shù)據(jù)類型和引用數(shù)據(jù)類型

  • 基本數(shù)據(jù)類型:byte short char int long float double boolean(沒有String)
  • 引用數(shù)據(jù)類型:數(shù)組,類,接口,枚舉(jdk1.5)
  • 注意:在調(diào)用方法的時(shí)候,如果參數(shù)是基本數(shù)據(jù)類型,屬于值傳遞,如果參數(shù)是引用類型,屬于址傳遞。按照Gaosling的說法無論是值傳遞還是址傳遞都是值傳遞,因?yàn)橹穫鬟f傳的是地址值,而地址值也是值!

匿名對(duì)象

  • 對(duì)象里頭有兩個(gè)東西,一個(gè)是屬性,一個(gè)是方法,真正被其他對(duì)象用到的還是對(duì)象的行為,如果某個(gè)類的某個(gè)行為對(duì)其他類有意義,需要且僅需要用到它一次,可以使用匿名類。

封裝

  • 對(duì)類的成員變量進(jìn)行封裝,對(duì)外提供對(duì)應(yīng)get,set方法,這樣的好處是成員變量無法直接被更改,需要通過提供的set方法進(jìn)行修改,方法可以隨意加代碼,使得成員變量可控!

this關(guān)鍵字

  • this用來區(qū)分成員變量以及局部變量
    因?yàn)榫植苛靠梢耘c成員變量相同,而方法內(nèi)賦值遵循就近原則,會(huì)直接給局部變量賦值,而不會(huì)給成員變量賦值,想要給成員變量賦值需要加上this
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容