这是我的课,我在这里连接两个字符串。null使用+运算符连接的字符串可以平稳执行,但可以NullPointerException使用concate()方法抛出。
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); } }
有人可以告诉我背后的原因吗?
情况1:
System.out.println(strNull+str); // will not give you exception
从文档(字符串转换)
如果引用为null,则将其转换为字符串“ null” (四个ASCII字符n,u,l,l)。 否则,将执行转换,就好像是通过调用不带参数的引用对象的toString方法一样;但是,如果调用toString方法的结果为null,则使用字符串“ null”代替。
如果引用为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。
concat(String str)
str.length();
null.length()