其他分享
首页 > 其他分享> > 基本类型包装类常量池详解(简洁清晰)

基本类型包装类常量池详解(简洁清晰)

作者:互联网

目录

1 内容提要

  1. Java基本类型的包装类大部分都实现了常量池技术,
    即Byte,Short,Integer,Long,Character,Boolean,这 6 种包装类默认创建了数值
    [-128,127] 的相应类型的缓存数据, 但是超出此范围仍然会去创建新的对象。
  2. 两种浮点数类型的包装类 Float、Double 并没有实现常量池技术。
Integer i1 = 40;
Integer i2 = 40;
Integer i3 = 0;
Integer i4 = new Integer(40);
Integer i5 = new Integer(40);
Integer i6 = new Integer(0);
  
System.out.println("i1=i2   " + (i1 == i2)); //输出 i1=i2  true
System.out.println("i1=i2+i3   " + (i1 == i2 + i3)); //输出 i1=i2+i3  true
//i2+i3得到40,比较的是数值
System.out.println("i1=i4   " + (i1 == i4)); //输出 i1=i4 false
System.out.println("i4=i5   " + (i4 == i5)); //输出 i4=i5 false
//i5+i6得到40,比较的是数值
System.out.println("i4=i5+i6   " + (i4 == i5 + i6)); //输出 i4=i5+i6 true
System.out.println("40=i5+i6   " + (40 == i5 + i6)); //输出 40=i5+i6 true 

2 注意事项

比如,把上边例子改成Integer i1 = 400; Integer i2 = 400;,很明显超过了127,无法从常量池获取常量,就要从堆中new新的Integer对象,这时i1和i2就不相等了。

标签:简洁,常量,i1,i2,i5,i4,40,详解,Integer
来源: https://blog.csdn.net/sc179/article/details/110147540