我是靠谱客的博主 重要服饰,最近开发中收集的这篇文章主要介绍Integer 的-128至127缓存常量池记录先说结论,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先说结论

Integer a=127;

Integer b=127;

Integer c=128;

Integer d=128;

a==b true
c==d false

Integer a=new Integer (127);

Integer b=new Integer (127);

Integer c=new Integer (128);

Integer d=new Integer (128);

a==b false
c==d false
Integer 内部有一个-128到127的缓存池,但是如果是new出来的,那每一个对象都会去新建,不会用到缓存池的数据
实测其他基本数据类型的包装类都有这个缓存池,包括:Byte,Short,Long


public static Integer valueOf(int i) {
return
i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i + 128];
}
/**
* A cache of instances used by {@link Integer#valueOf(int)} and auto-boxing
*/
private static final Integer[] SMALL_VALUES = new Integer[256];
static {
for (int i = -128; i < 128; i++) {
SMALL_VALUES[i + 128] = new Integer(i);
}
}

最后

以上就是重要服饰为你收集整理的Integer 的-128至127缓存常量池记录先说结论的全部内容,希望文章能够帮你解决Integer 的-128至127缓存常量池记录先说结论所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部