jdk1.5新特性4之自动装箱和自动拆箱与享元模式
2012-11-14 08:24
330 查看
一 基本概念
1 装箱
把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。如int——>Integer,float——>Float。
自动装箱
Integer a = 100,编译器调用的是static Integer valueOf(int i)
2 拆箱
和装箱相反,将引用类型的对象简化成值类型的数据
自动拆箱
int b = new Integer(100);
int c = a +2;
二 是否相等
例一
Integer a = new Integer(100);
Integer b = 100;
System.out.println(a == b);
false,很好理解,b的值在编译时就确定下来了,而a是分配一块堆给它,地址当然不等
例二
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b);
false,不解释
例三
Integer a = 100;
Integer b = 100;
System.out.println(a == b);
true,java为了提高效率,IntegerCache类中有一个数组缓存了值从-128到127的Integer对象。如果i的值是[-128,127]时,会直接从这个缓存中返回一个对象,否则就new一个Integer对象。类比String的驻留池。
例四
Integer a = 128;
Integer b = 128;
System.out.println(a == b);
false,解释见例3
例五
Integer a = Integer.valueOf(100);
Integer b = 100;
System.out.println(a == b);
true
例六
Integer a = Integer.valueOf(128);
Integer b = 128;
System.out.println(a == b);
false
三 享元模式
享元模式(Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。正如我们例三展示的。
参考博客
http://www.cnblogs.com/wangchenyang/archive/2012/02/01/2334760.html
http://baike.baidu.com/view/6143765.htm
相关文章推荐
- jdk1.5新特性4之自动装箱和自动拆箱与享元模式
- jdk 1.5新特性--自动装箱拆箱
- 黑马程序员——Java1.5新特性之享元模式、增强for循环、可变参数、静态导入、自动装箱和拆箱
- JAVA JDK1.5新特性<静态带入、可变参数、增强For循环、自动装箱及自动拆箱>
- JDK1.5新特性--自动装箱与拆箱
- 《黑马程序员》 jdk 1.5的新特性:自动装箱与拆箱练习及享元设计模式
- java JDK1.5新特性(一) [静态导入] [可变参数] [增强for] [自动装箱拆箱] [枚举]
- JDK1.5新特性之自动装箱与自动拆箱
- JDK5.0新特性系列---1.自动装箱和拆箱
- JDK 5.0新特性之自动装箱自动拆箱
- JAVA1.5新特性----基本数据类型的自动拆箱与装箱
- day9 JDK 新特性--注解、新 for 循环、静态导入、自动装箱拆箱、泛型、可变长参数
- Java JDK5.0的新特性 增强for循环 自动装箱/拆箱 可变参数 静态导入
- 自动装箱1.5新特性一个享元模式
- 1.5新特性静态导入、增强for、可变参数、自动装箱拆箱、枚举
- 黑马程序员<Java 1.5新特性>静态导入、增强for、可变参数、自动装箱拆箱、枚举
- Java学习笔记之JDK1.5新特性(四):自动装箱和自动拆箱
- 谈谈JDK1.5新特性之Integer与int的自动装箱和自动拆箱
- JDK5.0新特性-自动装箱/拆箱
- JDK 1.5 新特性——自动拆箱装箱