自动装箱与拆箱引发的享元设计模式
2014-12-18 00:00
246 查看
/** * 自动装箱与拆箱 */ public class Autoboxing { public static void main(String[] args) { Integer num1 = 20; //自动装箱 int num2 = new Integer(20); //自动拆箱 System.out.println(num2 == num1); //true //-128~127之间的同一个Intege对象相比为true Integer num3 = 128; Integer num4 = 128; System.out.println(num3 == num4); //false Integer num5 = -129; Integer num6 = -129; System.out.println(num5 == num6); //false } }
代码说明:
Integer num1 = 20;自动将int类型的整数20转换一个Integer对象,赋给num1;(装箱)
int num2 = new Integer(20); 自动将Integer对象的值20转换成int类型(拆箱)
在JDK5.0之前,这种方式是不能通过编译的,比如上述示例在JDK1.4只能通过new的方式创建Integer对象。
由自动装箱与拆箱引发的享元模式:
//存储-128~127之间的Integer对象 Integer num3 = 128; Integer num4 = 128; System.out.println(num3 == num4); //false Integer num5 = -129; Integer num6 = -129; System.out.println(num5 == num6); //false因为较小的整数用的频率比较广泛,所以JAVA虚拟机启动后将-128~127之间整数对像缓存起来,这样每次在使用-128~127之间的整数对象时不用频繁的创建,而是直接去缓存池里取,如果缓存池里存在该数值,就直接取出来,如果不存在,则创建一新的对象返回,这样一来即可节省内存资源。这种将常用或公共的数据缓存起来反复复用的方式,叫做享元模式。
以上只是个人的见解,如有不正确的地方,请前辈指教!
相关文章推荐
- 自动装箱与拆箱引发的享元设计模式
- 自动装箱与拆箱引发的享元设计模式
- 自动装箱与拆箱引发的享元设计模式
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
- 《黑马程序员》 jdk 1.5的新特性:自动装箱与拆箱练习及享元设计模式
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
- JDK1.5新特性:静态导入、可变参数、增强for循环、自动装箱拆箱(享元设计模式)、枚举、注解、泛型、
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- 【自动装箱、自动拆箱】享元设计模式:对于小的整数,装箱装成的对象都是同一个
- Java高新技术1---增强for循环 ---装箱与拆箱享元设计模式--自己写枚举--可变长度的参数
- 黑马程序员--高新技术--静态导入,基本数据类型拆箱与装箱,享元设计模式
- 黑马程序员_ java高新之自动装箱与拆箱(引入设计模式:享元模式)
- Java高新技术1---增强for循环 ---装箱与拆箱享元设计模式--自己写枚举--可变长度的参数
- 黑马程序员——静态导入,可变参数,自动拆箱装箱以及享元设计模式 JDK1.5新特性
- 黑马程序员之装箱与拆箱(享元设计模式的应用)
- 黑马程序员_基本数据的自动拆装箱及享元设计模式
- 基本数据的自动拆装箱及享元设计模式
- 由自动装箱和拆箱引发我看Integer源码
- 黑马程序员 ---Java加强_基本数据的自动拆装箱及享元设计模式,javabean
- [Java笔记]基本数据的自动拆装箱及享元设计模式