关于自动装箱和自动拆箱

1 Integer a = new Integer(1);
2 Integer b = Integer.valueOf(1);
3 Integer c = inc(0);
4 Integer d = 1;
1 public static Integer inc(Integer x) {
2         // return这里的相加应该是先拆箱然后相加吧?(这里不确定)
3         // 相加为1后又装箱到Integer里面 而装箱默认调用的是valueOf所以b和c == 为true
4         return x + 1;
5     }

猜想一下a b c d是否都相等呢?

结果是:a和bcd都不相等  bcd相等

因为a是直接new的对象所以值是都相等的,但是用==比较的是对象的引用地址,所以不相等

第二三四行因为是取的缓存中的数

第三四行其实都会默认调用Integer.valueOf()

以上仅仅个人理解,有疑问或者错误,请评论

原文地址:https://www.cnblogs.com/jianguang/p/6806944.html