对string和null关键字进行Concat操作

时间:2013-10-10 15:34:10

标签: java string null concat

根据我的理解,当+运算符与两个字符串文字一起使用时,会调用concat方法来生成期望的字符串。 示例 - String s = "A" + "B";

当存在null代替下面的一个文字时,它产生低于输出。 我在这里很困惑 - 它为什么不抛出NullPointerException

    String str = null + "B";
    System.out.println(str);

输出:

  

nullB

2 个答案:

答案 0 :(得分:6)

  

为什么不抛出NullPointerException

因为,字符串连接将字符串转换操作应用于不是String类型的操作数,在这种情况下为null引用。字符串连接转换为:

String str = new StringBuilder("null").append("B").toString();

不会抛出NPE

来自JLS §5.1.11 - String Conversion

  

然后通过字符串转换将此引用值转换为String类型。   [...]

     
      
  • 如果引用为null,则会将其转换为字符串"null"(四个ASCII字符nul,{{1} })。
  •   

答案 1 :(得分:4)

因为您连接两个字符串,str不为空。当你使用+来连接这两个字符串时,它也是一个字符串也是null。