《黑马程序员》自动装箱拆箱 (享元模式)
2011-05-29 10:41
246 查看
Integer i=5;
Integer j=5;
System.out.println(i == j );
此时打印的结果是true;
但是如果改为:
Integer i=130;
Integer j=130;
System.out.println(i == j );
这时打印的结果是false;
解析:这时将每个int类型的数据自动装箱成为一个Integer对象。如果int类型的数据大小在-128~128之间(包含-128,不包含128)。此时自动装成的Integer对象,会放进缓存中。如果后面还有int类型的数据自动装箱成为Integer对象时,首先会在缓存中查找,如果数据相等就直接用缓存中的对象。否则会自动在缓存中新添一个对象。如果int类型的数据不在-128~128之间,此时会在内存中新建对象,此时每个对象的地址都是不同的。
升级:这里应用的是享元模式(flyweight)。适用:有大量重用的对象时,节省内存,加快运行速度。
注意:Integer.valueof()也是按照以上原理得到Integer对象
Integer j=5;
System.out.println(i == j );
此时打印的结果是true;
但是如果改为:
Integer i=130;
Integer j=130;
System.out.println(i == j );
这时打印的结果是false;
解析:这时将每个int类型的数据自动装箱成为一个Integer对象。如果int类型的数据大小在-128~128之间(包含-128,不包含128)。此时自动装成的Integer对象,会放进缓存中。如果后面还有int类型的数据自动装箱成为Integer对象时,首先会在缓存中查找,如果数据相等就直接用缓存中的对象。否则会自动在缓存中新添一个对象。如果int类型的数据不在-128~128之间,此时会在内存中新建对象,此时每个对象的地址都是不同的。
升级:这里应用的是享元模式(flyweight)。适用:有大量重用的对象时,节省内存,加快运行速度。
注意:Integer.valueof()也是按照以上原理得到Integer对象
相关文章推荐
- 黑马程序员——Java1.5新特性之享元模式、增强for循环、可变参数、静态导入、自动装箱和拆箱
- Java深入(高新技术)(二):开发环境、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、享元模式
- 自动装箱拆箱_享元模式
- Integer类自动装箱、拆箱与享元模式
- 黑马程序员_加强11_基本数据类型的自动拆箱与装箱+享元模式
- 自动装箱与拆箱------->引出享元模式
- jdk1.5新特性4之自动装箱和自动拆箱与享元模式
- jdk1.5新特性4之自动装箱和自动拆箱与享元模式
- Integer类自动装箱、拆箱与享元模式
- 基本数据的自动拆箱与装箱及享元模式
- 黑马程序员_ java高新之自动装箱与拆箱(引入设计模式:享元模式)
- Java 自动装箱和拆箱
- Java支持的基本数据类型及自动装箱、拆箱
- 自动装箱拆箱在Java集合类框架引起的性能问题
- 基本数据的自动拆箱与装箱及其细节问题
- Java 自动装箱与拆箱
- Java包装类、自动装箱与拆箱知识总结
- Java自动装箱和拆箱
- JDK1.5新特性之---自动装箱/拆箱
- JDK5自动装箱/拆箱