究竟什么样的对象才会是null?

来源:互联网 发布:詹姆斯2016赛季数据 编辑:程序博客网 时间:2024/05/22 02:15

最近工作上事情稍微少一些,闲下来突然想起一个问题:当一个对象为 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是没有分配空间。这样就很好理解,面试的时候也好解释(面试经典题目之一)。

0 0