最近工作上事情稍微少一些,闲下来突然想起一个问题:当一个对象为 null时,是他的某一部分属性为null,还是所有属性都为null?我相信有不少人在这里会绕进去,虽然我之前理解过String的null和“”的区别。
其实,比如我要声明一个user对象。如果使用默认的构造方法,那么所有的属性均未赋值(我为了测试,专门写了参数全部为string类型的构造器)。也就是说,Useruser = new User();创建的时候,所有属性均未赋值。判断对象,结果是不为null。
另外,创建全局变量user,判断是否为null,结果是。
不使用new关键字创建的全局变量,只是声明了,但是并没有分配内存空间。所以为null
使用new创建的对象,已经分配了内存空间,只是属性没有赋值。
因此,可以清楚了解,一个对象的属性即使所有属性均未赋值,他依然不为null。
下面在稍微带一下String中null和“”的区别。
String str = "";
String var = null;
其实,同上。空字符串是分配了空间,赋值“”。Null是没有分配空间。这样就很好理解,面试的时候也好解释(面试经典题目之一)。