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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜光 高级黑马   /  2013-6-8 22:22  /  1725 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-6-9 18:47 编辑
  1. class  OperateDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.            String a = null;
  6.                 //System.out.println(a.length());
  7.            a = a+null;
  8.            System.out.println(a.length());
  9.                
  10.         }
  11. }
复制代码
为什么两个null值相加后会打印数字8,是什么意思?

评分

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

查看全部评分

6 个回复

倒序浏览
相加以后,a里面就相当于存了两个null字符串啊,只是这个字符串的名字比较特殊而已,长度当然是8啦
class  OperateDemo
{
        public static void main(String[] args)
        {
           String a = null;
                //System.out.println(a.length());
           a = a+null;
           System.out.println(a);//这里你改成打印a,就会知道里面存储的是什么了
               
        }
}

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 shang1jk 于 2013-6-9 08:02 编辑

查了下之前看《疯狂Java讲义精粹》时候的笔记(http://blog.csdn.net/shang1jk/article/details/8121898), “引用类型包括类、接口和数组类型,还有一种特殊的null类型. 所谓引用类型就是对一个对象的引用, 对象包括实例和数组两种.(字符串类型是一个类(String类), 属于引用数据类型.)” , null是一种特殊的类型。

所以,我觉得a = a + null; 语句把一个字符串类型与一个null类型相“+”,是根据null类型的自身的特殊性质决定怎么进行“+”运算的(就像对于String类型是进行连接)。试验了一下,好像是相“+”时把null常量作为“null”字符串进行的。

等大神。  



评分

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

查看全部评分

回复 使用道具 举报
朱志江 发表于 2013-6-8 23:43
具体解释请参考我写的代码内的注释.

这些没错,可是这个null跟四个同样字母组成的字符串“null”一样?

如果说是+理解为连接字符串的话,需要null.toString()方法的返回值吧好像,可是null.toString();报错。

弄不明白, 真心求教。
回复 使用道具 举报
shang1jk 发表于 2013-6-8 23:44
查了下之前看《疯狂Java讲义精粹》时候的笔记(http://blog.csdn.net/shang1jk/article/details/8121898) ...

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