串联Double类型时出现Java NullPointerException,但串联String类型时没有


Double d1 = null;
Double d2 = null;
System.out.println(d1+d2);//throw NullPointerException
String s1 = null;
String s2 = null;
System.out.println(s1+s2);//doesn't throw any exception prints nullnull

既然Double和String都是Object类型,那么为什么Double类型会抛出异常呢??

只是为了详细说明@Seelenvirtualose的评论。

两个类型为Double的表达式上的+运算符被解释为数学加法。因此,它试图从对象中提取数值,并将它们相加。由于本例中的变量包含null而不是对象,因此会得到NullPointerException。

String类型的两个表达式上的+运算符被解释为串联。关于如何在串联中处理null,有一些规则:它被转换为字符串"null"。从而可以在没有错误的情况下执行操作。

相关内容

最新更新