面向?qū)ο?/h4>
- 通過屬性,行為描述現(xiàn)實(shí)世界的事物舆声。而JAVA一個類可以表述一個事物供置,事物的屬性對應(yīng)類的成員變量,事物的行為對應(yīng)類的成員方法 谚鄙。
類與對象
- 類是一組相關(guān)屬性的集合 例如:學(xué)生
- 對象是事物的具體體現(xiàn) 例如:王生華同學(xué)
對象的內(nèi)存圖
- 編譯:通過bin目錄下的javac.exe工具將.java文件轉(zhuǎn)換為.class文件
- 運(yùn)行:通過bin目錄下的java.exe工具將.class文件加載到方法區(qū)各拷,方法區(qū)相當(dāng)于代碼倉庫。
-
內(nèi)存圖
1.對象的成員變量在堆內(nèi)存里面
2.對象的成員方法是在棧內(nèi)存中被調(diào)用闷营,調(diào)用的時候方法入棧烤黍,調(diào)用完方法出棧
3.對于沒有被使用的對象,垃圾回收機(jī)制會自動回收內(nèi)存
4.java中的調(diào)用遵循一個原理:后出現(xiàn)的調(diào)用先出現(xiàn)的粮坞。
靜態(tài)的元素是程序開始運(yùn)行的時候就加載好的蚊荣,當(dāng)所有靜態(tài)元素(靜態(tài)成員變量初狰,靜態(tài)成員方法)都加載好后莫杈,再由各線程開啟各自的業(yè)務(wù)。
??main方法就是一個線程奢入。main方法開始執(zhí)行的時候筝闹,所有靜態(tài)元素都已經(jīng)存在了。所以在main方法中腥光,靜態(tài)之間可以肆意相互調(diào)用。當(dāng)然其他運(yùn)行的線程也是一樣,而我們能實(shí)際感受到的都是運(yùn)行是的線程脚粟,所以可以說靜態(tài)元素之間是可以相互調(diào)用的缭保。
??對于非靜態(tài)成員變量,是在線程業(yè)務(wù)執(zhí)行過程中生成的捉片,只要類進(jìn)行了實(shí)例化平痰,就可以被調(diào)用。
??對于非靜態(tài)的成員方法伍纫,本類的方法屬性可隨意調(diào)用宗雇,他類如果是非靜態(tài)類,實(shí)例化后可調(diào)用莹规,靜態(tài)類隨意調(diào)用
- 通過屬性,行為描述現(xiàn)實(shí)世界的事物舆声。而JAVA一個類可以表述一個事物供置,事物的屬性對應(yīng)類的成員變量,事物的行為對應(yīng)類的成員方法 谚鄙。
- 類是一組相關(guān)屬性的集合 例如:學(xué)生
- 編譯:通過bin目錄下的javac.exe工具將.java文件轉(zhuǎn)換為.class文件
1.對象的成員變量在堆內(nèi)存里面
2.對象的成員方法是在棧內(nèi)存中被調(diào)用闷营,調(diào)用的時候方法入棧烤黍,調(diào)用完方法出棧
3.對于沒有被使用的對象,垃圾回收機(jī)制會自動回收內(nèi)存
4.java中的調(diào)用遵循一個原理:后出現(xiàn)的調(diào)用先出現(xiàn)的粮坞。靜態(tài)的元素是程序開始運(yùn)行的時候就加載好的蚊荣,當(dāng)所有靜態(tài)元素(靜態(tài)成員變量初狰,靜態(tài)成員方法)都加載好后莫杈,再由各線程開啟各自的業(yè)務(wù)。
??main方法就是一個線程奢入。main方法開始執(zhí)行的時候筝闹,所有靜態(tài)元素都已經(jīng)存在了。所以在main方法中腥光,靜態(tài)之間可以肆意相互調(diào)用。當(dāng)然其他運(yùn)行的線程也是一樣,而我們能實(shí)際感受到的都是運(yùn)行是的線程脚粟,所以可以說靜態(tài)元素之間是可以相互調(diào)用的缭保。
??對于非靜態(tài)成員變量,是在線程業(yè)務(wù)執(zhí)行過程中生成的捉片,只要類進(jìn)行了實(shí)例化平痰,就可以被調(diào)用。
??對于非靜態(tài)的成員方法伍纫,本類的方法屬性可隨意調(diào)用宗雇,他類如果是非靜態(tài)類,實(shí)例化后可調(diào)用莹规,靜態(tài)類隨意調(diào)用
5.main方法是游離于所有類之外的赔蒲,所有外部類對main方法可見。
局部變量與成員變量
- 局部變量:方法內(nèi)、方法聲明上舞虱,棧內(nèi)存欢际,有默認(rèn)初始化值,隨著方法的調(diào)用而存在矾兜,方法的調(diào)用完畢而消失
- 成員變量:類中方法外幼苛,堆內(nèi)存,使用前必須主動初始化焕刮,隨著對象的創(chuàng)建而存在舶沿,隨著對象的消失而消失
- 注意:因?yàn)榫植孔兞亢统蓡T變量并沒有存儲在一塊內(nèi)存區(qū)域里面,所以成員變量可以跟局部變量重名配并,使用時遵循就近原則括荡。
基本數(shù)據(jù)類型和引用數(shù)據(jù)類型
- 基本數(shù)據(jù)類型:byte short char int long float double boolean(沒有String)
- 引用數(shù)據(jù)類型:數(shù)組,類溉旋,接口畸冲,枚舉(jdk1.5)
- 注意:在調(diào)用方法的時候,如果參數(shù)是基本數(shù)據(jù)類型观腊,屬于值傳遞邑闲,如果參數(shù)是引用類型,屬于址傳遞梧油。按照Gaosling的說法無論是值傳遞還是址傳遞都是值傳遞苫耸,因?yàn)橹穫鬟f傳的是地址值,而地址值也是值儡陨!
匿名對象
- 對象里頭有兩個東西褪子,一個是屬性,一個是方法骗村,真正被其他對象用到的還是對象的行為嫌褪,如果某個類的某個行為對其他類有意義,需要且僅需要用到它一次胚股,可以使用匿名類笼痛。
封裝
- 對類的成員變量進(jìn)行封裝,對外提供對應(yīng)get,set方法琅拌,這樣的好處是成員變量無法直接被更改缨伊,需要通過提供的set方法進(jìn)行修改,方法可以隨意加代碼财忽,使得成員變量可控倘核!
this關(guān)鍵字
- this用來區(qū)分成員變量以及局部變量
因?yàn)榫植苛靠梢耘c成員變量相同,而方法內(nèi)賦值遵循就近原則即彪,會直接給局部變量賦值紧唱,而不會給成員變量賦值活尊,想要給成員變量賦值需要加上this