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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金樽月 初级黑马   /  2015-10-5 17:54  /  559 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都知道String是一个类。那么
String str = "a";
str = null;
System.ou.print(str);
str都已经是垃圾了,。可是控制台怎么会输出null,而不是NullPointerException呢?

5 个回复

倒序浏览
str=null后,将不再指向对应的字符串,只有当str调用方法时才会出现空指针异常

评分

参与人数 1黑马币 +1 收起 理由
金樽月 + 1 很给力!

查看全部评分

回复 举报
null和空字符串并不是同一个概念。
空字符串长度为0,可以通过if (str.length() == 0) 或 if (str.equals(""))判断。
而null则是通过if (str == null) 判断,null是一个特别的值。

如果要判断字符串是不是既不是null,也不是空,需要先判断是不是null。
if (str != null && str.length() != 0)
不然会出现异常。

评分

参与人数 1黑马币 +1 收起 理由
金樽月 + 1 赞一个!

查看全部评分

回复 举报
流觞曲水 发表于 2015-10-5 18:06
str=null后,将不再指向对应的字符串,只有当str调用方法时才会出现空指针异常 ...

没办法,很穷。。。。。
还是谢谢你,终于解决了。
回复 举报
然子 发表于 2015-10-5 18:38
null和空字符串并不是同一个概念。
空字符串长度为0,可以通过if (str.length() == 0) 或 if (str.equals(" ...

看你写了这么,不赞一个实在不好意思
不过你明显没有看明白我的问题,上层戳中了。。。
回复 举报
null是一个常量,并且这个常量是放在方法区中的常量池中
回复 举报
您需要登录后才可以回帖 登录 | 加入黑马