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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wedge 中级黑马   /  2013-7-14 17:51  /  2135 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中,String a=null和String a=""有何区别?

评分

参与人数 1黑马币 +2 收起 理由
神之梦 + 2 神马都是浮云

查看全部评分

9 个回复

倒序浏览
NULL 表示一个引用也就是没有指向任何引用,而""表示一个空的字符串,它是以'\0'做结束的

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
嗯,被楼上的兄弟给说了,我也是这么理解的
回复 使用道具 举报
String a=null 表明a没有指向任何字符 是一个空引用,不占内存空间。 String a=""   表明a指向一个空字符,a不是一个空引用,要分配内存空间

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
String a = null ;   申明一个string类型的 a,同时在内存里申请了一个空间地址,但是该地址不指向任何引用地址;
String a = "" ;申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用字符串的引用地址;

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
String a=null 是个空指针,代表改没有该位置自然也就没有任何值。然而String a=""是已经开辟了一块地址出来,只是地址中是个空字符串而已。
这么说能理解吗?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
xscn 高级黑马 2013-7-17 01:03:06
7#
String a=null就是一个空指针引用,可以理解为不存在的,没有任何引用指向
String a=""相当于在内存中开辟了一个空间,放上了一个空字符串

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
答:String a=null 表明a没有指向任何字符 是一个空引用,不占内存空间。String a=""   表明栈内存a指向一个空字符,a不是一个空引用,要分配内存空间
回复 使用道具 举报
也就是null 是没有的意思。不会给分配内存。而“”里面是放得有空的字符。会给他分配内存的,要占内存的
回复 使用道具 举报
String a=null 只是在编译器中登记了一个叫做a的字符串,但编译器并没有产生字符串对象来引用它;String a="",其赋值内容为空,表示虽然已经产生了引用,但内存空间大小还没有确定
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马