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

Jun*_*uns 2 java string null concat

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

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

    String str = null + "B";
    System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

输出:

nullB

Roh*_*ain 6

为什么不扔NullPointerException.

因为,字符串连接将字符串转换操作应用于非类型的操作数,在本例中Stringnull引用.字符串连接转换为:

String str = new StringBuilder("null").append("B").toString();
Run Code Online (Sandbox Code Playgroud)

哪个不会扔NPE.

来自JLS§5.1.11 - 字符串转换:

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

  • 如果引用null,它被转换成字符串"null"(4个ASCII字符n,u,l,l).

  • 您的代码不正确,关于oracle文档,新的StringBuilder(null)与抛出NPE.http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#StringBuilder(java.lang.CharSequence) (2认同)