程序员人生 网站导航

Java装箱和拆箱的基本概念及使用

栏目:php教程时间:2017-03-18 08:32:12

学习Java的同学注意了!!! 
学习进程中遇到甚么问题或想获得学习资源的话,欢迎加入Java学习交换群,群号码:183993990  我们1起学Java!


要理解装箱和拆箱的概念,就要理解Java数据类型

装箱:把基本类型用它们相应的援用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float

拆箱:和装箱相反,将援用类型的对象简化成值类型的数据

Integer a = 100;                  这是自动装箱  (编译器调用的是static Integer valueOf(int i))
int     b = new Integer(100); 这是自动拆箱

看下面1段代码

m1

public class DataType {
 
    public static void main(String args[]) {
        DataType dt =new DataType();
        dt.m11();
        dt.m12();
         
    }
 
    public void m11() {
        Integer a =new Integer(100);
        Integer b =100;
        System.out.println("m11 result " + (a == b));
    }
 
    public void m12() {
        Integer a =new Integer(128);
        Integer b =128;
        System.out.println("m12 result " + (a == b));
    }
 
     
}

  打印结果是甚么?

m11 result false
m12 result false

“==”比较的是地址,而a和b两个对象的地址不同,即是两个对象,所以都是false

通过javap解析字节码,内容以下

public void m11();
  Code:
   0:   new     #44; //class java/lang/Integer
   3:   dup
   4:   bipush  100
   6:   invokespecial   #46; //Method java/lang/Integer."<
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐