Integer的那些坑

1.Integer的不变性


image.png

每生成一个Integer对象,里面都会包含一个唯一的不变值value。大家都知道java有自动装箱,拆箱机制。
表面上是:Integer a = 3;
实际上是: Integer a = Integer.valueOf(3);


image.png

而valueOf的每一次返回值都是一个新的Integer对象。
也就是说,一个Integer一旦生成,里面的值就无法改变,能做的就只有更改对象,这点和String非常类似,所以使用的时候要注意性能问题。
image.png

最后输出的结果仍是3;
i最开始形参i保存的是a的引用,i=i+1后,并不是直接修改i引用的值,而是生成新的对象,并将引用赋给i;
Integer具有不变性!!!!!!

image.png

Integer的值在-128到127之间的时候,引用的是缓存的值,可以提升速度,所以在这个区间内会存在a == b的情况。

你可能感兴趣的:(Integer的那些坑)