大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
Java Integer取值范围
Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647 ,包括-2147483648 和 2147483647。
但是对于Integer类,java为了提高效率,初始化了-128–127之间的整数对象,因此Integer类取值-128–127的时候效率最高。
测试:public class Integertest { public static void main(String[] args) {
System.out.println(“最大取值:” + Integer.MAX_VALUE);
System.out.println(“最小取值:” + Integer.MIN_VALUE);
}
}
输出:最大取值:2147483647 最小取值:-2147483648
拓展知识:
JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样。
例:public class IntegerTest {
public static void main() {
Integer i1=127,i2=127;
System.out.println(i1==i2);
Integer i1=128,i2=128;
System.out.println(i1==i2);
}
}
输出结果:true
false
当Integer取值在常量池范围之内,对JVM为了节省空间, 当Integer的值落在-128~127之间时,如i1,i2;此时JVM首先检查是否已存在值为127的Integer对象。如果是,则i1,i2直接是引用已存在对象,即i1 = i52所以判断i1 == i2 为 true。
当超出常量池取值范围,则每次都会新建对象。Integer类中有一个静态内部类IntegerCache,在IntegerCache类中有一个Integer数组,用以缓存当数值范围为-128~127时的Integer对象。
更多web开发知识,请查阅 HTML中文网 !!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/223432.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...