1.每个基本类型都有一个对应的包装类。
2.Java中基本数据类型不是面向对象的,使用对应的包装类方便对象的操作。
3.每个基本数据类型对应的包装类,可以使用对应的基本数据类型的构造函数
public Integer(int value) {
this.value = value;
}
除Character外,其他的包装类可以使用String作为参数的构造函数
4.JDK1.5新增自动装箱和自动拆箱的功能
Integer i = 100; 将源码反编译,可以看到编译器已经优化了 --> Integer i = Integer.valueOf(100);即自动装箱
int i = new Integer("123");将源码反编译 --> int i = new Integer("123").intValue();即自动拆箱
5.对于Integer类,
该类有一个静态内部类 IntegerCache 会缓存[-128,127]的Integer对象,
@Test public void testApp(){ Integer i = 100; // 调用valueOf Integer j = 100; System.out.println(i == j); //true System.out.println(i.equals(j)); //true Integer i1 = 128; Integer j1 = 128; System.out.println(i1 == j1); //false System.out.println(i1.equals(j1)); //true }
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; // [-128,127] 返回缓存对象 return new Integer(i); // 其他直接返回new 对象 }