一尘不染

为什么String用+运算符连接null并用concate()方法抛出NullPointerException

java

这是我的课,我在这里连接两个字符串。null使用+运算符连接的字符串可以平稳执行,但可以NullPointerException使用concate()方法抛出。

public class Test {

    public static void main(String[] args) {

        String str="abc";
        String strNull=null;

        System.out.println(strNull+str);

        str.concat(strNull);
    }
}

有人可以告诉我背后的原因吗?


阅读 306

收藏
2020-12-03

共1个答案

一尘不染

情况1:

 System.out.println(strNull+str);  // will not give you exception

文档(字符串转换)

如果引用为null,则将其转换为字符串“ null” (四个ASCII字符n,u,l,l)。

否则,将执行转换,就好像是通过调用不带参数的引用对象的toString方法一样;但是,如果调用toString方法的结果为null,则使用字符串“
null”代替。

情况2:

str.concat(strNull);  //NullPointer exception

如果您看到它的来源concat(String str)那么str.length();就好比null.length()给您一个NullPointerException

2020-12-03