1.在JDK1.5之前是手动装箱和手动拆箱的
手动装箱的2种实现方式:
(1)Integer.valueOf(n)
(2)new Integer(n)
手动拆箱的实现方法:integer.intValue()
2.在JDK1.5以后(包含1.5)是自动装箱和自动拆箱的
自动装箱的实现方式:Integer integer = m
自动装箱的实现方式:m = integer
public class IntegerClass {public static void main(String[] args) {//在JDK1.5之前是手动装箱和手动拆箱的//手动装箱的两种实现方式int n1 = 1;Integer integer1 = Integer.valueOf(n1);//若n1在-128~127之间,则不是通过new Integer(i)/*valueOf()的源码:public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)//其中low为-128,high为127return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}*/Integer integer2 = new Integer(n1);//手动拆箱的实现方法int n2 = integer1.intValue();/*Integer的构造器之一:public Integer(int value) {this.value = value;}*///在JDK1.5以后(包含1.5)是自动装箱和自动拆箱的//手动装箱的实现方式int m1 = 1;Integer integer3 = m1;//底层调用的是Integer.valueOf(m1)m1 = integer3;//底层调用的是integer3.intValue()}
}
经典面试题1:
代码:
public class Interview1 {public static void main(String[] args) {Object object = true? new Integer(1):new Double(2.0);System.out.println(object);//1.0三元运行符是一个整体,精度自动转换Object object1;if(true){System.out.println(new Integer(1));//输出1,if_else是单独的}else {System.out.println(new Double(2.0));}}
}
注:三元运行符是一个整体,精度自动转换。if_else是单独的
经典面试题2:
代码:
public class Interview2 {public static void main(String[] args) {Integer n1 = new Integer(1);Integer n2 = new Integer(1);System.out.println(n1 == n2);//false,因为这边是n1和n2是new出来的对象Integer n3 = 1;Integer n4 = 1;System.out.println(n3 == n4);//true,因为底层是Integer.valueOf(1),1在-128~127之间之间,返回的数组中的元素,并不是new的Integer n5 = 128;Integer n6 = 128;System.out.println(n5 == n6);//false,因为底层是Integer.valueOf(1),1不在-128~127之间之间,是new的}
}