1 public class Test { 2 public static void main(String[] args) { 3 Integer i1 = 100; 4 Integer i2 = 100; 5 Integer i3 = 128; 6 Integer i4 = 128; 7 8 System.out.println(i1 == i2); // true 9 System.out.println(i3 == i4); // false 10 } 11 }
由于JVM中缓存部分基本类型的包装类型对象,其中integer最小值是-128不可变,默认最大值为127,且最大值不能小于127,可通过jvm参数: -Djava.lang.Integer.IntegerCache.high=1024 修改为1024,其他类型可参考源码。
包装类型 | 基本数据类型 | 缓存对象(基本数据类型值) |
---|---|---|
Boolean | boolean | true,false(全部值) |
Byte | byte | -128~127(全部值) |
Short | short | -128~127 |
Character | char | 0~127 |
Integer | int | -128~127(默认为127) |
Long | long | -128~127 |
Float | float | 无缓存值 |
Double | double | 无缓存值 |
本文参考https://blog.csdn.net/qq_36405172/article/details/92656926