自动装箱拆箱主要作用于基本数据类型于封装类中
比如:
1. Integer num=new Integer(10); 原始创建引用对象情况 现自动装箱: Integer i = 10 是不是变简单啦
2. 自动拆箱 int num1 = num 将引用数据类型对象转为基本数据类型
那么对于Integer自动装箱声明的对象(Integer num = 10) 怎样进行存放的
比如:
比较 Integer num1 = 297; Integer num2 = 297; / /在-128~127 之外的数
System.out.println("num1==num2: "+(num1==num2));
Integer num3 = 97; Integer num4 = 97; // 在-128~127 之内的数
System.out.println("num3==num4: "+(num3==num4));
打印的结果是:num1==num2: false num3==num4: true
为啥是这样,因为进行数据装箱的时候使用到了享元模式规定在-128~127之内的数据如果存在就使用存在数据,如果不存在就创建
常量池:顾名思义用于存储常量的池子,也就是说如果常量存在则直接从池中取,如果不存在则创建出来再放入池中,java中基本类型的包装类的大部分都实现了常量池技术,这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现,另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池。