一、包装类型
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。
八个基本类型:boolean/1;byte/8;char/16;short/16;int/32;float/32;long/64;double/64
二、缓存池
new Integer(123)与Integer.valueOf(123)的区别在于,new Integer(123)每次都会新建一个对象,而Integer.valueOf(123)可能会使用缓存对象,因此多次使用Integer.valueOf(123)会取得同一个对象的引用。
编译器会在自动装箱过程中调用valueOf() 方法,valurOf()方法的实现是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容,如果不在的话,就要新建。
Java缓存池中基本类型的值:boolean:true和false;byte:-128-127;short:-128-127;int:-128-127
Integer a = Integer.valueOf(128); Integer b = Integer.valueOf(128); System.out.println(a==b); //值为false,因为128超出了缓存池中int表示的范围 Integer a = Integer.valueOf(127); Integer b = Integer.valueOf(127); System.out.println(a==b); //值为true Integer a = 128; Integer b = 128; System.out.println(a==b) //值为false,自动装箱过程中编译器会调用valueOf()方法