反编译:是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
测试代码:
1 public class BoxAndUnbox { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 int value=100; 8 9 Integer obj=value; //装箱 10 11 int result=obj*2; //拆箱 12 System.out.println(obj); 13 System.out.println(result); 14 15 } 16 17 }
运行结果如下:
100
200
反编译如下:
(非自己操作,电脑Java文件无法在cmd运行)
由此可见 在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。
装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 intValue方法实现。