new Interger(5)
说简单点就是新建一个对象
Interger.valueof(5)
- 在Interger,存在着256个的缓存对象,范围[-127,128]之间
- 如果在指定的范围内的值话,那么就访问缓存的对象,而不会新建对象(比 new Interger(5)的效率更高啦~ )
- 如果在指定的范围外的值话,那么就新建对象
说了这么多,运行一下就一目了然了:
public class Demo_Integer {
public static void main(String[] args) {
Integer a1 = new Integer(5);// 新分配内存
Integer a2 = Integer.valueOf(5);// 直接访问缓存对象
Integer a3 = Integer.valueOf(5);// 直接访问缓存对象
System.out.println(a1 == a2);
System.out.println(a2 == a3);
System.out.println(a1.equals(a3));
}
}
false
true
true