java高新技术之自动装箱拆箱
2012-07-20 00:16
946 查看
自动装箱拆箱是JDK1.5出现的新特性,主要的目的是方便封装类和基本类型之间的转化,该特性允许基本数据类型之间直接相互赋值.
下面看一段代码:
输入结果为: 5
false
true
下面进行解释代码中obj为Integer类型,为一个引用类型,把obj赋值为3时,编译器自动把基本数据类型int类型的3装箱成Integer类型,然后赋给了obj,在System.out.println(obj+3);语句中,编译器又把obj自动拆箱为基本数据类型int类型,和3相加,
Integer i1 = 12;
Integer i2 = 12;
Integer i3 =128;
Integer i4 =128;
System.out.println(i3==i4);
System.out.println(i1==i2);}
至于这几段代码
对于基本类型的整数,要装箱成Integer对象的时候,如果这个数字在一个字节之内,即-128~127之间,一旦封装成Integer对象,就会把这个值缓存在一个池内,再装入一个对象时,会看这个池里有没有,有的话就直接把地址值赋给新装入的对象,否则new一个新对象,这样比较节省内存空间,感觉小的整数出现的频率会高一点,大家都会使用到,就把这个共享了,这就是所谓的享元模式,即当对象很小,很多个地方又会用到这个对象,需要整出很多个这样的对象来,但是弄出来那么多的对象是使用时是一模一样的,这时候就可以搞一个这样的对象,然后大家都使用这个对象,节省了内存空间,这一点和String在内存中的存放规则是类似的。
下面看一段代码:
public class AutoBox { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Integer obj = 3; System.out.println(obj+3); Integer i1 = 12; Integer i2 = 12; Integer i3 =128; Integer i4 =128; System.out.println(i3==i4); System.out.println(i1==i2); } }
输入结果为: 5
false
true
下面进行解释代码中obj为Integer类型,为一个引用类型,把obj赋值为3时,编译器自动把基本数据类型int类型的3装箱成Integer类型,然后赋给了obj,在System.out.println(obj+3);语句中,编译器又把obj自动拆箱为基本数据类型int类型,和3相加,
Integer i1 = 12;
Integer i2 = 12;
Integer i3 =128;
Integer i4 =128;
System.out.println(i3==i4);
System.out.println(i1==i2);}
至于这几段代码
对于基本类型的整数,要装箱成Integer对象的时候,如果这个数字在一个字节之内,即-128~127之间,一旦封装成Integer对象,就会把这个值缓存在一个池内,再装入一个对象时,会看这个池里有没有,有的话就直接把地址值赋给新装入的对象,否则new一个新对象,这样比较节省内存空间,感觉小的整数出现的频率会高一点,大家都会使用到,就把这个共享了,这就是所谓的享元模式,即当对象很小,很多个地方又会用到这个对象,需要整出很多个这样的对象来,但是弄出来那么多的对象是使用时是一模一样的,这时候就可以搞一个这样的对象,然后大家都使用这个对象,节省了内存空间,这一点和String在内存中的存放规则是类似的。
相关文章推荐
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- Java深入(高新技术)(二):开发环境、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、享元模式
- Java高新技术【1】 (静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱)
- Java高新技术【1】 (静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱)
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- java 自动拆箱(unboxing)和自动装箱(boxing)
- Java支持的基本数据类型及自动装箱、拆箱
- Java 自动装箱和拆箱
- Java JDK5.0的新特性 增强for循环 自动装箱/拆箱 可变参数 静态导入
- Java自动拆箱和自动装箱
- [每日一问]---Java中支持的数据类型有哪些?什么是自动装箱和拆箱?
- d909 java自动装箱和拆箱
- Java 自动装箱与拆箱(Autoboxing and unboxing)【转】
- java自动装箱、自动拆箱和正常情况性能比较
- java中自动打包+解包机制(又称自动装箱,拆箱)Auto-Boxing,UnBoxing
- Java---自动装箱和拆箱
- Java基础笔记 – 增强的for循环For each循环 自动装箱拆箱 可变参数
- Java自动装箱拆箱注意点
- Java 自动装箱与拆箱(Autoboxing and unboxing)
- java笔记----自动拆箱和自动装箱