public static void main(String[] args) {
Integer i1 = 33;
Integer i2 = 33;
System.out.println(i1.equals(i2));// 比较值,输出 true
System.out.println(i1 == i2);// 比较内存地址,输出 true
Float i11 = 333f;
Float i22 = 333f;
System.out.println(i11.equals(i22));// 比较值,输出 true
System.out.println(i11 == i22);//比较内存地址, 输出 false
Double i3 = 1.2;
Double i4 = 1.2;
System.out.println(i3.equals(i4));// 比较值,输出 true
System.out.println(i3 == i4);// 比较内存地址,输出 false
}
结果:
Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False。
如果包装类型的值是其缓存区间之内,那内存里面会默认缓存此次值。用==去比对时,就是比较的同一个内存地址。
如果不是缓存区间内的值,不会缓存,用 ==去比对就是不同的。
比较包装类型的值时,用equal去比对。