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"
。从而可以在没有错误的情况下执行操作。