- Integer是int的包装类,int则是java的一种基本数据类型
- Integer变量必须实例化后才能使用,而int变量不需要
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
- 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]之间,就会创建一个新的对象