基本类型不是类,但Java提供了与基本类型对应的包装类。
通过下列网址,可以获得包装类的内容:
Double和Float没有缓存,其他类型都有高频缓存区间。其高频缓存区间的缓存范围是:
Boolean:使用静态final,就会返回静态值
Byte:-128~127
Short:-128~127
Character:0~127
Long:-128~127
Integer:-128~127
public class Demo1 {
public static void main(String[] args) {
Integer number1 = 127;
Integer number2 = 127;
System.out.println("number1==number2判断的值为" + (number1 == number2));
Integer number3 = 128;
Integer number4 = 128;
System.out.println("number3==number4判断的值为" + (number3 == number4));
}
}
结果为true和false
这是因为在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
public class Demo2 {
public static void main(String[] args) {
Boolean bool1 = false;
Boolean bool2 = false;
Boolean bool3 = true;
Boolean bool4 = true;
System.out.println("bool1==bool2判断的值为"+(bool1==bool1));
System.out.println("bool3==bool4判断的值为"+(bool3==bool4));
}
}
结果为true和true
它们使用静态 final 定义,就会返回静态值,所以答案2中返回都是true。
public class Demo3 {
public static void main(String[] args) {
Double d1 = 20.0;
Double d2 = 20.0;
System.out.println("d1==d2判断的值为" + (d1 == d2));
Double d3 = 30.0;
Double d4 = 30.0;
System.out.println("d3==d4判断的值为" + (d3 == d4));
}
}
结果为false和false。
它会返回一个新的Double对象。