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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

HM黄祥为

中级黑马

  • 黑马币:0

  • 帖子:17

  • 精华:0

© HM黄祥为 中级黑马   /  2013-4-9 10:27  /  1170 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下代码
public class Demo {

        private static String a;
        private static String b;

        public static void main(String[] args) {
                String c = a + b;
                System.out.println(c);
        }
}


这段代码输出时 nullnull
为什么会这样 a和b都为空 相加后 c应该为空才对 怎么会打印nullnull呢

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
private static String a;
a,b是因为没有初始化就是用所以是null。
c是定义的局部变量,而且赋值了。所以不会是null。a,b都是null,字符串的相加就是字符串连接。所以两个null连接。
”nullnull“。
只有当c没有初始化值的时候才会是null。
还有就是null跟“null”是有区别的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
学习了!
回复 使用道具 举报
  1. public static void main(String[] args)
  2.         {
  3.                 String c = a + b;
  4.                 String d = "nullnull";
  5.                 System.out.println(c);//nullnull
  6.                 System.out.println("equals:"+c.equals(d));//true,从这句可以看到,a和b的null转换成了字符串进行了比较,也就是我的理解是运算符"+"会将两边的转成字符串
  7.                 System.out.println("==:"+(c==d));//false
  8.                
  9.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
由于在类中定义的类变量都有一个默认值,引用数据类型默认为null,局部变量没有默认值

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马