自动拆箱和装箱的过程由编译器自动完成:通过包装类的valueOf方法将基本数据类型包装成引用类型;通过包装类对象xxxValue方法将引用类型变为对应的基本类型
•Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。
•基本数据类型和基本数据类型封装型进行“==”运算符的比较时,基本数据类型封装型会先自动拆箱变为基本数据类型后再进行比较。
• Java 中只是对 部分 基本数据类型对应包装类的 部分 数据进行了缓存: 1. byte 、 short 、 int 和 long 所对应包装类的数据缓存范围为 -128~127 (包括 -128 和 127 ); ● Integer a = -128; Integer b =-128; System.out.println(a==b);//输出true Integer c = 128; Integer d = 128; System.out.println(c==d);//输出false
2. float 和 double 所对应的包装类没有数据缓存范围; ● Double a = 1.0; Double b = 1.0; System.out.println(a==b);//输出false
3. char 所对应包装类的数据缓存范围为 0~127 (包括 0 和 127 ); ● Character a = 127; Character b = 127; System.out.println(a==b);//输出true
4. boolean 所对应包装类的数据缓存为 true 和 false ; Boolean a = true; Boolean b = true; System.out.println(a==b);//输出true