面向?qū)ο?/h4>
- 通過屬性,行為描述現(xiàn)實世界的事物。而JAVA一個類可以表述一個事物,事物的屬性對應類的成員變量,事物的行為對應類的成員方法 。
類與對象
- 類是一組相關屬性的集合 例如:學生
- 對象是事物的具體體現(xiàn) 例如:王生華同學
對象的內(nèi)存圖
- 編譯:通過bin目錄下的javac.exe工具將.java文件轉換為.class文件
- 運行:通過bin目錄下的java.exe工具將.class文件加載到方法區(qū),方法區(qū)相當于代碼倉庫。
-
內(nèi)存圖
s1.png
1.對象的成員變量在堆內(nèi)存里面
2.對象的成員方法是在棧內(nèi)存中被調(diào)用,調(diào)用的時候方法入棧,調(diào)用完方法出棧
3.對于沒有被使用的對象,垃圾回收機制會自動回收內(nèi)存
4.java中的調(diào)用遵循一個原理:后出現(xiàn)的調(diào)用先出現(xiàn)的。
靜態(tài)的元素是程序開始運行的時候就加載好的,當所有靜態(tài)元素(靜態(tài)成員變量,靜態(tài)成員方法)都加載好后,再由各線程開啟各自的業(yè)務。
??main方法就是一個線程。main方法開始執(zhí)行的時候,所有靜態(tài)元素都已經(jīng)存在了。所以在main方法中,靜態(tài)之間可以肆意相互調(diào)用。當然其他運行的線程也是一樣,而我們能實際感受到的都是運行是的線程,所以可以說靜態(tài)元素之間是可以相互調(diào)用的。
??對于非靜態(tài)成員變量,是在線程業(yè)務執(zhí)行過程中生成的,只要類進行了實例化,就可以被調(diào)用。
??對于非靜態(tài)的成員方法,本類的方法屬性可隨意調(diào)用,他類如果是非靜態(tài)類,實例化后可調(diào)用,靜態(tài)類隨意調(diào)用
- 通過屬性,行為描述現(xiàn)實世界的事物。而JAVA一個類可以表述一個事物,事物的屬性對應類的成員變量,事物的行為對應類的成員方法 。
- 類是一組相關屬性的集合 例如:學生
- 編譯:通過bin目錄下的javac.exe工具將.java文件轉換為.class文件
s1.png
1.對象的成員變量在堆內(nèi)存里面
2.對象的成員方法是在棧內(nèi)存中被調(diào)用,調(diào)用的時候方法入棧,調(diào)用完方法出棧
3.對于沒有被使用的對象,垃圾回收機制會自動回收內(nèi)存
4.java中的調(diào)用遵循一個原理:后出現(xiàn)的調(diào)用先出現(xiàn)的。靜態(tài)的元素是程序開始運行的時候就加載好的,當所有靜態(tài)元素(靜態(tài)成員變量,靜態(tài)成員方法)都加載好后,再由各線程開啟各自的業(yè)務。
??main方法就是一個線程。main方法開始執(zhí)行的時候,所有靜態(tài)元素都已經(jīng)存在了。所以在main方法中,靜態(tài)之間可以肆意相互調(diào)用。當然其他運行的線程也是一樣,而我們能實際感受到的都是運行是的線程,所以可以說靜態(tài)元素之間是可以相互調(diào)用的。
??對于非靜態(tài)成員變量,是在線程業(yè)務執(zhí)行過程中生成的,只要類進行了實例化,就可以被調(diào)用。
??對于非靜態(tài)的成員方法,本類的方法屬性可隨意調(diào)用,他類如果是非靜態(tài)類,實例化后可調(diào)用,靜態(tài)類隨意調(diào)用
5.main方法是游離于所有類之外的,所有外部類對main方法可見。
局部變量與成員變量
- 局部變量:方法內(nèi)、方法聲明上,棧內(nèi)存,有默認初始化值,隨著方法的調(diào)用而存在,方法的調(diào)用完畢而消失
- 成員變量:類中方法外,堆內(nèi)存,使用前必須主動初始化,隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
- 注意:因為局部變量和成員變量并沒有存儲在一塊內(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的說法無論是值傳遞還是址傳遞都是值傳遞,因為址傳遞傳的是地址值,而地址值也是值!
匿名對象
- 對象里頭有兩個東西,一個是屬性,一個是方法,真正被其他對象用到的還是對象的行為,如果某個類的某個行為對其他類有意義,需要且僅需要用到它一次,可以使用匿名類。
封裝
- 對類的成員變量進行封裝,對外提供對應get,set方法,這樣的好處是成員變量無法直接被更改,需要通過提供的set方法進行修改,方法可以隨意加代碼,使得成員變量可控!
this關鍵字
- this用來區(qū)分成員變量以及局部變量
因為局部量可以與成員變量相同,而方法內(nèi)賦值遵循就近原則,會直接給局部變量賦值,而不會給成員變量賦值,想要給成員變量賦值需要加上this