Integer a = 1;
Integer b = 2;
Long c = 3L;
//c = a+b;//编译出错,会出现int不能转为long的错误
System.out.println(c==(a+b));//正常编译,结果为true
为什么?
我知道int和long相加的时候会都转化为long,和这个有关系吗?
对于System.out.println(c==(a+b))
首先会将a、b拆箱成int,然后相加,最后的结果应该是个int,c是个long,首先他们类型不同,IntegerCache和LongCache的地址肯定也不相同。
还有,对于《深入理解JVM》中有这样一句话,“包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱”是什么意思
料青山看我应如是
慕哥6287543
相关分类