int和Integer 装箱和拆箱

  1. Integer是int的包装类,int则是java的一种基本数据类型 
  2. Integer变量必须实例化后才能使用,而int变量不需要 
  3. Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 
  4. Integer的默认值是null,int的默认值是0
public class Test {
    public static void main(String[] args) {
       int a=3; //基本数据类型
       Integer it=new Integer(a);//基本数据类型转换成封装类型
       Integer it1=a;//装箱     基本数据类型通过=自动转换成类类型
        int a1=it.intValue(); //封装类型转换成基本数据类型
        int a2=it1; //拆箱      通过=自动转换成int型
    }
}

 所以通俗理解:装箱就是  基本数据类型通过=自动转换成类类型

                            拆箱就是  类类型通过=自动转换成基本数据类型

然后在网上看到这样一段代码,没打印之前我做错了

public class Test {
    public static void main(String[] args) {
        Integer i1=100;
        Integer i2=100;
        Integer i3=200;
        Integer i4=200;
        System.out.println(i1==i2);
        System.out.println(i3==i4);
    }
}

实际打印结果

true
false

其实:在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。

在通过valueOf方法创建Integer对象的时候,如果数值不在[-128,127]之间,就会创建一个新的对象

猜你喜欢

转载自blog.csdn.net/QingXu1234/article/details/81171679