概述
public class SEjava {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
输出结果:
true
false
原因:
JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer在-128-127时,在自动装箱过程中是取自常量池中的数值;
当Integer取值在常量池范围之内,对JVM为了节省空间, 当Integer的值落在-128~127之间时,JVM首先检查是否已存在值为127的Integer对象。如果是,则直接是引用已存在对象;
当超出常量池取值范围,则每次都会新建对象。Integer类中有一个静态内部类IntegerCache,在IntegerCache类中有一个Integer数组,用以缓存当数值范围为-128~127时的Integer对象。
最后
以上就是温暖芒果为你收集整理的Integer i3 = 200;的全部内容,希望文章能够帮你解决Integer i3 = 200;所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复