java 中的null与"+"


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型,右边随便写都可以得到一个字符串链接的结果。

知其然,不知其所以然。
等待高人来解答这是怎么搞的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值