Strings = obj + ""

andayfour 2016-01-12 12:07:54
这个obj是转型了吗?

Object o = null;
System.out.println(o);
String s = o + "";
s.toString();
o.toString();
System.out.println(s);

o 跟 s都是null
但是为什么s.toString(); 不报错, o.toString();就是空指针异常
...全文
282 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
任东1990 2016-01-17
  • 打赏
  • 举报
回复
楼上全部正解! 混经验的!
小虾飘飘 2016-01-15
  • 打赏
  • 举报
回复
“”与null是不一样的。“”代表有这个东西,只不过内容就是空,而null代表没有
u010917792 2016-01-15
  • 打赏
  • 举报
回复
o不是字符串当然不能toString()
随风而醒 2016-01-15
  • 打赏
  • 举报
回复
2楼 正解
kiyoki 2016-01-15
  • 打赏
  • 举报
回复
java规范中有规定,null与字符串进行拼接操作时当做字符串“null”处理,所以能和""拼接出"null"
门没锁啊 2016-01-14
  • 打赏
  • 举报
回复

debug调试一下 一目了然
nolan4954 2016-01-14
  • 打赏
  • 举报
回复
赞同楼上; 即,o为null值(是不存在的值),s为“”(是空的字符串),s+o就是字符串值为null的“null”, 楼主可以打印System.out.println(s+o + "=======================“);看输出结果为:null============================
心随自在飞 2016-01-14
  • 打赏
  • 举报
回复
一个是空对象,一个是空字符串!
木飞骄 2016-01-13
  • 打赏
  • 举报
回复
首先,o的值为null,报空指针,是正常的。但是,这里的s是o+""的结果,字符串连接符在这里会对o特殊处理,所以s的真实指向是"null",而不是null,所以不会报空指针。
weixin_31155427 2016-01-13
  • 打赏
  • 举报
回复
s是一个空串,并不是null所以不是空指针
丶望月 2016-01-12
  • 打赏
  • 举报
回复
s是string ,o是object ,s存的是"" 可以点 null 不可以点

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧