Java中的引用概念

本文轉自http://pengcqu.javaeye.com/blog/485115,內容爲java中引用概念的一些講解,希望受用。

關鍵字: java 引用

     Java對對象和基本的數據類型的處理是不一樣的。和C語言一樣,當把Java的基本數據類型(如int,char,double等)作爲入口參數傳給函數體的時候,傳入的參數在函數體內部變成了局部變量,這個局部變量是輸入參數的一個拷貝,所有的函數體內部的操作都是針對這個拷貝的操作,函數執行結束後,這個局部變量也就完成了它的使命,它影響不到作爲輸入參數的變量。這種方式的參數傳遞被稱爲"值傳遞"。而在Java中用對象作爲入口參數的傳遞則缺省爲"引用傳遞",也就是說僅僅傳遞了對象的一個"引用",這個"引用"的概念同C語言中的指針引用是一樣的。當函數體內部對輸入變量改變時,實質上就是在對這個對象的直接操作。除了在函數傳值的時候是"引用傳遞",在任何用"="向對象變量賦值的時候都是"引用傳遞"。

產生:引用總是在把對象作參數"傳遞"的過程中自動發生,不需要人爲的產生,也不能人爲的控制引用的產生。這個傳遞包括把對象作爲函數的入口參數的情況,也包括用"="進行對象賦值的時候。


範圍:只有局部的引用,沒有局部的對象。引用在Java語言的體現就是變量,而變量在Java語言中是有範圍的,可以是局部的,也可以是全局的。


生存期:程序只能控制引用的生存週期。對象的生存期是由Java控制。用"new Object()"語句生成一個新的對象,是在計算機的內存中聲明一塊區域存儲對象,只有Java的垃圾收集器才能決定在適當的時候回收對象佔用的內存。沒有辦法阻止對引用的改動。

Strong reference, soft reference, weak refeence, phantom reference

發佈了8 篇原創文章 · 獲贊 0 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章