区分JAVA中的对象和引用
生活随笔
收集整理的這篇文章主要介紹了
区分JAVA中的对象和引用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.什么是對象?
“萬物皆對象”,這是JAVA在設計之初的理念之一。所謂“對象”,按通俗的說法就是“某個類(class)的一個實例(instance)”。一般存儲在堆中。
2.什么是引用?
JAVA中的引用和C語言中的指針一樣 ,都是操縱對象的標識符,是基于特殊語法的間接表示。一般存儲在速度更快地堆棧中。
3.代碼分析
定義Person類:
class Person{ Int age StringBuffer name }創建Person類對象:
Person lisi = new Person();下面分析這句創建對象的語句,總共包含4個動作:
(1)右邊的“ new Person() ”,是以Person類為模板,創建一個Person類的對象(Person對象); (2)末尾的()表示,當Person對象創建后,立即調用Person類的構造函數(自定義或系統默認)對該對象進行初始化 。 (3)左邊的 “Person lisi”,創建了一個Person類引用變量,用來指向Person對象的對象引用。 (4)“=” 表示一個傳遞地址的過程,即將右邊創建的對象“new Person()”的地址傳給左邊的引用變量“Person lisi”,從而使“引用”指向了“對象”。下面將創建Person對象的語句拆分成更清晰的兩部分:
Person lisi;//引用變量部分 lisi = new Person(); //Person對象部分由于對象創建在堆內存中,沒有名字無法直接訪問和表示,所以就用引用變量間接訪問和表示。
延伸討論:
情況一:如果代碼只是執行了第一部分,由于沒有指向任何一個對象,那么引用變量 lisi 就會為 null ; 情況二:再創建一個引用變量wangwu:Person wangwu;wangwu = lisi ;第二句表示引用lisi中存有的Person()對象的地址復制給引用wangwu,使引用wangwu也指向了Person()對象。 情況三:在創建一個新的Person()變量wangwu = Person();表示引用wangwu,指向了新的變量。 綜上:(1)一個對象引用可以指向0個或1個對象;(2)一個對象可以有N個引用指向它。 情況四:lisi = wangwu;此時lisi不再指向第一個Person對象,而是和wangwu一樣指向了第二個創建的Person對象。那么此時第一個創建的Person對象就會被列為垃圾回收的處理對象。對象和引用的關系將持續到對象回收。 情況五:如果創建的對象沒有引用變量也是合法的。System.out.println(“JavaRefrence”); //字符串打印完成后對象即被列入回收行列總結
以上是生活随笔為你收集整理的区分JAVA中的对象和引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八进制、十进制、十六进制及字符相互对应表
- 下一篇: Java中的nextInt()和next