黑马程序员技术交流社区

标题: 字符串的null值 [打印本页]

作者: 杜光    时间: 2013-6-8 22:22
标题: 字符串的null值
本帖最后由 杜光 于 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,是什么意思?
作者: 郑锐    时间: 2013-6-8 22:35
相加以后,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,就会知道里面存储的是什么了
               
        }
}
作者: shang1jk    时间: 2013-6-8 23:44
本帖最后由 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”字符串进行的。

等大神。  




作者: shang1jk    时间: 2013-6-8 23:50
朱志江 发表于 2013-6-8 23:43
具体解释请参考我写的代码内的注释.

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

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

弄不明白, 真心求教。
作者: 袁梦希    时间: 2013-6-9 14:51
shang1jk 发表于 2013-6-8 23:44
查了下之前看《疯狂Java讲义精粹》时候的笔记(http://blog.csdn.net/shang1jk/article/details/8121898) ...

加油  兄弟
作者: 袁梦希    时间: 2013-6-9 14:51
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。{:soso_e102:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2