黑马程序员技术交流社区

标题: ""和null的差别 [打印本页]

作者: 专职黑马100年    时间: 2014-11-23 22:36
标题: ""和null的差别
想知道点底层的东西,原则理论上的区别,请不要全发例子来解释。。
作者: 二月的雨    时间: 2014-11-23 22:47
底层的东西,你可以这样理解,null是一个什么也没有装的空杯子,而“”是一个装了 空字符串的杯子。从代码上来说null就是你没有对一个对象赋值,而“”就是你对一个字符串赋值了,赋得值就是“”这个值,在内存中会有区别的。再从另一点来说 null针对的是对象,比如Object o1 = null, 而“”只是把一个字符串赋为“”。
作者: 依米阳光    时间: 2014-11-23 23:13
不知道这样解释是否是你想要的答案:
null是没有的意思,就是什么都没有指向.""是一个空的字符串,这个有是指向的.
在内存堆中:“”代表在堆内存中开辟了一片内存,内存中的值是“”也就是空字符串。null代表没有指向任何地址,也就是没有在内存中开辟空间。
string a1;  //a1是null
String a2= new String();  //a2是""

作者: javaAndroid    时间: 2014-11-23 23:43
""是空字符串,是一个存在的对象。
在内存中是存在的,表示的是一个空字符串
而null则表示没有指向
例如String s="";和String s=null;
s=""表示s指向的是一个空字符串
而 s=null;表示s不指向。仅仅是有变量s一个名字。
作者: DamonZh    时间: 2014-11-24 08:51
null是引用类型的一个特殊值,String是引用类型 如果为null 那么它不指向任何地址 如果为"" 那么它指向一个内存空间 但里面没内容
作者: 金福林    时间: 2014-11-24 09:11
一个有地址一个没地址,你说有没有区别?真空和空气的区别,就是这么点意思。
作者: FlyFish    时间: 2014-11-24 10:49
引用毕老师的话:"aaa"是是羊肉串,“”是签子,null是什么也没有……
作者: zhouyunfang    时间: 2014-11-24 15:00
最简单的例子:
java中的Integer对int做了封装,Integer 可以为null
int不可以为null。
不知是否和你想要的答案一样。
作者: wxnzb502    时间: 2014-11-24 21:54
null是一个常量,“”是一个String对象。null在内存中没有指向任何东西,“”会在内存的方法区的常量池开辟一个空间,有内存的地址值
作者: sunyeyu    时间: 2014-11-24 22:01
空字符串在内存中是有地址得 ,他是可以调用String 得普通方法得 ,若null 是一个空字符串常量 ,是没有地址得 不可以调用String得方法。
作者: 迷失的小Z    时间: 2014-11-24 22:03
一个是空字符串,但他还是个字符串对象,是有地址值的,null则是真正意义上的啥都没有啊……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2