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的情况。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容