java中的類 java synchronized鎖對象,當對象引用是null的時候,鎖的是什么?
java synchronized鎖對象,當對象引用是null的時候,鎖的是什么?謝謝!Java語言規(guī)范明確指出,如果鎖定的對象為null,則會發(fā)生NullPointerException。規(guī)范的內容
java synchronized鎖對象,當對象引用是null的時候,鎖的是什么?
謝謝
!Java語言規(guī)范明確指出,如果鎖定的對象為null,則會發(fā)生NullPointerException。規(guī)范的內容如下:
表達式的類型必須是引用類型,否則會發(fā)生完全時間錯誤。首先計算表達式,執(zhí)行同步語句。然后:如果表達式的求值由于某種原因完全完成,否則,如果表達式的值為null,則拋出NullPointerException。
Java對象使用后設置為null會減少內存占用嗎?
首先,Java對象是引用變量,它使用兩種內存區(qū)域:堆內存和堆棧內存。Java對象存儲在堆內存中,對它們的引用(理解為變量)存儲在堆棧內存中。
例如,string STR=new string(“string”)使用兩段內存,new string(“string”)存儲在堆內存中,STR變量存儲在堆棧內存中。
當我們將對象設置為null(即:STR=null)時,STR變量與堆內存中的數(shù)據(jù)斷開連接。GC算法會在必要時回收STR和堆內存中的對象,但是我們不能干預GC的任何回收。
.GC將在正確的時間回收垃圾數(shù)據(jù)。
Java什么時候將對象賦值null?
Java類型分為基本類型和引用類型
int/char/long等基本類型有默認值,
int 0
long 0l
類成員變量。沒有默認值。默認值為null
class person{
string name//name。默認值為空。使用時分配
string Guojia=“China”//國家默認為中國
}