package zuoye2;
/**
* 自动装箱和拆箱
* @author 110
* 自动装箱和拆箱就是讲将基本数据类型和包装类之间进行自动的互相转换,JDK1.5之后,java引入了自动装箱和拆箱
* 自动装箱:
* 基本类型的数据处于需要对相关的环境中时,会自动转为“对象”。
* 自动拆箱:
* 每当需要一个值时,对象会自动转成基本数据类型,没必要再去显示调用intValue()、doubleValue()等转型方法。
*
* 用一句话总结自动装箱/拆箱:
* 自动装箱过程是通过调用包装类valueof()方法实现的,而自动拆箱过程是通过调用包装类的xxxvalue()方法
* 实现的(xxx代表对应的基本数据类型,如intvalue()、doublebalue()等)。
*/
public class study03 {
public static void main(String[] args) {
//自动装箱
Integer a = 5;//编译会修改成Integer a = Integet.valueof(5);
//自动拆箱
int b = a;//编译器会修改成 int b = a.intvalue();
Integer c = null;
int d=c;
//缓存[-128,127]之间的数字
//因为有一个数组已经把-128到127这些数字作为对象存储了起来,当我们调用Valueof()的时候
//如果创建的对象在这个数字之间,那么就直接在那个数组里面取,所以这两个-128是来自同一个对象,
//所以返回的是true,如果不在这个范围内,则重新创建对象。
Integer in1 = -128;
Integer in2 = -128;
System.out.println(in1==in2);//判断两个是不是同一个对象
System.out.println(in1.equals(in2));//判断两个对象的内容是否相等
System.out.println("########################");
//因为1234不在缓存的范围内,所以,in3和in4是新创建的两个对象,所以会返回false;
Integer in3 = 1234;
Integer in4 = 1234;
System.out.println(in3==in4);//判断两个是不是同一个对象
System.out.println(in3.equals(in4));//判断两个对象的内容是否相等
}
}