Integer a = null;
System.out.println(a); //null
System.out.println(a+1);//空指针异常
System.out.println(1+a);//空指针异常
System.out.println(""+a);
String b = null;
System.out.println((b+1).charAt(1));// u
System.out.println(b+new Object());// nulljava.lang.Object@1babddb
Object c = null;
System.out.println(b+c);//nullnull
虽然a跟b都是null,但是java在处理他们的运算时还是做了不同的对待,整形数报异常,而字符串被以"null"的形式输出了。
或者另一个理解,整型的+号表示数学运算,所以抛异常,而字符串型的+标示字符的链接所以java做了一个null值转换为"null"再链接其他字符的动作。
最后得出的结果是 :
1、null在与数字类的值做运算会报空指针,这时候+号应该表示数学运算
2、nul还可以String类的值做+运算,运算时表示链接,以字符串"null"的形式链接起来
3、null不能跟任何其他的类型做+运算,或者应该说 任何非数字类型和字符串类型都不能使用+号了,其他数学运算符号更不行。
4、String类型可以跟任何类型包括null做"+"运算,也就是说"+"左边如果是String型,右边随便写都可以得到一个字符串链接的结果。
知其然,不知其所以然。
等待高人来解答这是怎么搞的。