A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 专职黑马100年 中级黑马   /  2014-11-23 22:36  /  1147 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想知道点底层的东西,原则理论上的区别,请不要全发例子来解释。。

10 个回复

倒序浏览
底层的东西,你可以这样理解,null是一个什么也没有装的空杯子,而“”是一个装了 空字符串的杯子。从代码上来说null就是你没有对一个对象赋值,而“”就是你对一个字符串赋值了,赋得值就是“”这个值,在内存中会有区别的。再从另一点来说 null针对的是对象,比如Object o1 = null, 而“”只是把一个字符串赋为“”。
回复 使用道具 举报
不知道这样解释是否是你想要的答案:
null是没有的意思,就是什么都没有指向.""是一个空的字符串,这个有是指向的.
在内存堆中:“”代表在堆内存中开辟了一片内存,内存中的值是“”也就是空字符串。null代表没有指向任何地址,也就是没有在内存中开辟空间。
string a1;  //a1是null
String a2= new String();  //a2是""
回复 使用道具 举报
""是空字符串,是一个存在的对象。
在内存中是存在的,表示的是一个空字符串
而null则表示没有指向
例如String s="";和String s=null;
s=""表示s指向的是一个空字符串
而 s=null;表示s不指向。仅仅是有变量s一个名字。
回复 使用道具 举报
DamonZh 来自手机 中级黑马 2014-11-24 08:51:16
报纸
null是引用类型的一个特殊值,String是引用类型 如果为null 那么它不指向任何地址 如果为"" 那么它指向一个内存空间 但里面没内容
回复 使用道具 举报
一个有地址一个没地址,你说有没有区别?真空和空气的区别,就是这么点意思。
回复 使用道具 举报
FlyFish 中级黑马 2014-11-24 10:49:41
7#
引用毕老师的话:"aaa"是是羊肉串,“”是签子,null是什么也没有……
回复 使用道具 举报
最简单的例子:
java中的Integer对int做了封装,Integer 可以为null
int不可以为null。
不知是否和你想要的答案一样。
回复 使用道具 举报
null是一个常量,“”是一个String对象。null在内存中没有指向任何东西,“”会在内存的方法区的常量池开辟一个空间,有内存的地址值
回复 使用道具 举报
空字符串在内存中是有地址得 ,他是可以调用String 得普通方法得 ,若null 是一个空字符串常量 ,是没有地址得 不可以调用String得方法。
回复 使用道具 举报
一个是空字符串,但他还是个字符串对象,是有地址值的,null则是真正意义上的啥都没有啊……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马