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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫衣侯 中级黑马   /  2013-6-8 21:20  /  1253 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 紫衣侯 于 2013-6-9 19:08 编辑

               String a = null;
                //System.out.println(a.length());
           a= a+null;
           System.out.println(a.length());
null不是代表空值吗,也就是没有数据。为什么 a=a+null;之后竟然成为字符串?

评分

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

查看全部评分

4 个回复

倒序浏览
String a = null;是吧a的地址指向空,但是NULL本身对应一个内存编码,所以当a= a+null;就是把null值赋给了a。说的不够清楚,但是大致意思就是这样吧

评分

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

查看全部评分

回复 使用道具 举报
System.out.println(a.length);运行会报NullPointerException,a = a+null;System.out.println(a.length);的到的结果是8,迷茫吧,其实jvm所做的是,
a = new StringBuilder(String.valueOf(a)).append(String.valueOf(null)).toString();返回nullnull一个null是4位,两正好是8。

评分

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

查看全部评分

回复 使用道具 举报
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。{:soso_e102:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马