Ⅰ java中引用是什麼
關於java中的引用 我覺得在"think in java"這本書裡面講得很好 在那本書里 他們把引用叫做"句柄"(Handle)
java中就是用"句柄"來操縱對象的
在java中 任何東西都可以看作是對象 因此,我們可採用一種統一的語法,任何地方均可照搬不誤。但要注意,盡管將一切都「看作」對象,但操縱的標識符實際是指向一個對象的「句柄」(Handle)。在其他Java參考書里,還可看到有的人將其稱作一個「引用」,甚至一個「指針」。可將這一情形想像成用遙控板(句柄)操縱電視機(對象)。只要握住這個遙控板,就相當於掌握了與電視機連接的通道。但一旦需要「換頻道」或者「關小聲音」,我們實際操縱的是遙控板(句柄),再由遙控板自己操縱電視機(對象)。如果要在房間里四處走走,並想保持對電視機的控制,那麼手上拿著的是遙控板,而非電視機。
此外,即使沒有電視機,遙控板亦可獨立存在。也就是說,只是由於擁有一個句柄,並不表示必須有一個對象同它連接。
Ⅱ 什麼是java引用 和C++里的指針和引用有什麼區別
個人感覺Java引用使用上和C++的指針差不多。Java引用可以為null,指針也可以。java引用和C++的指針一般都要new一個對象才能用。
不過語法上又像C++的引用,可以直接用成員訪問符,僅此而已。
其實C++的指針和引用本身區別也沒有多少,引用這個概念就是從C語言,指針擴展來的。
Ⅲ java里的引用是啥意思
說白了就是內存地址。
在Java中的引用類型,是指除了基本的變數類型之外的所有類型,所有的類型在內存中都會分配一定的存儲空間(形參在使用的時候也會分配存儲空間,方法調用完成之後,這塊存儲空間自動消失), 基本的變數類型只有一塊存儲空間(分配在stack中), 而引用類型有兩塊存儲空間(一塊在stack中,一塊在heap中), 方法形參的值傳遞(引用)是指形參和傳進來的參數指向同一個值的內存(heap)中;
Ⅳ Java中的強引用,軟引用,弱引用,虛引用有什麼用
強引用:
只要引用存在,垃圾回收器永遠不會回收
Object obj = new Object();
//可直接通過obj取得對應的對象 如obj.equels(new Object());
而這樣 obj對象對後面new Object的一個強引用,只有當obj這個引用被釋放之後,對象才會被釋放掉,這也是我們經常所用到的編碼形式。
軟引用:
非必須引用,內存溢出之前進行回收,可以通過以下代碼實現
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有時候會返回null
這時候sf是對obj的一個軟引用,通過sf.get()方法可以取到這個對象,當然,當這個對象被標記為需要回收的對象時,則返回null;
軟引用主要用戶實現類似緩存的功能,在內存足夠的情況下直接通過軟引用取值,無需從繁忙的真實來源查詢數據,提升速度;當內存不足時,自動刪除這部分緩存數據,從真正的來源查詢這些數據。
弱引用:
第二次垃圾回收時回收,可以通過如下代碼實現
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有時候會返回null
wf.isEnQueued();//返回是否被垃圾回收器標記為即將回收的垃圾
弱引用是在第二次垃圾回收時回收,短時間內通過弱引用取對應的數據,可以取到,當執行過第二次垃圾回收時,將返回null。
弱引用主要用於監控對象是否已經被垃圾回收器標記為即將回收的垃圾,可以通過弱引用的isEnQueued方法返回對象是否被垃圾回收器標記。
虛引用:
垃圾回收時回收,無法通過引用取到對象值,可以通過如下代碼實現
Object obj = new Object();
PhantomReference<Object> pf = new PhantomReference<Object>(obj);
obj=null;
pf.get();//永遠返回null
pf.isEnQueued();//返回是否從內存中已經刪除
虛引用是每次垃圾回收的時候都會被回收,通過虛引用的get方法永遠獲取到的數據為null,因此也被成為幽靈引用。
虛引用主要用於檢測對象是否已經從內存中刪除。