java中的类 java synchronized锁对象,当对象引用是null的时候,锁的是什么?
java synchronized锁对象,当对象引用是null的时候,锁的是什么?谢谢!Java语言规范明确指出,如果锁定的对象为null,则会发生NullPointerException。规范的内容
java synchronized锁对象,当对象引用是null的时候,锁的是什么?
谢谢
!Java语言规范明确指出,如果锁定的对象为null,则会发生NullPointerException。规范的内容如下:
表达式的类型必须是引用类型,否则会发生完全时间错误。首先计算表达式,执行同步语句。然后:如果表达式的求值由于某种原因完全完成,否则,如果表达式的值为null,则抛出NullPointerException。
Java对象使用后设置为null会减少内存占用吗?
首先,Java对象是引用变量,它使用两种内存区域:堆内存和堆栈内存。Java对象存储在堆内存中,对它们的引用(理解为变量)存储在堆栈内存中。
例如,string STR=new string(“string”)使用两段内存,new string(“string”)存储在堆内存中,STR变量存储在堆栈内存中。
当我们将对象设置为null(即:STR=null)时,STR变量与堆内存中的数据断开连接。GC算法会在必要时回收STR和堆内存中的对象,但是我们不能干预GC的任何回收。
.GC将在正确的时间回收垃圾数据。
Java什么时候将对象赋值null?
Java类型分为基本类型和引用类型
int/char/long等基本类型有默认值,
int 0
long 0l
类成员变量。没有默认值。默认值为null
class person{
string name//name。默认值为空。使用时分配
string Guojia=“China”//国家默认为中国
}