- 浏览: 214084 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (139)
- java (37)
- web (14)
- database (9)
- compute Net (1)
- design patten (4)
- 生活 (14)
- 求职 (5)
- j2me (1)
- 娱乐 (0)
- 漫画 (0)
- struts (5)
- hibernate (1)
- spring (2)
- ajax (3)
- oracle (3)
- UML&面向对象 (3)
- ffmpeg (2)
- eclipse (8)
- 技巧 (11)
- jsp (2)
- javascript (7)
- flex (2)
- xx (0)
- xxx (0)
- android (0)
- webservice (1)
- 博客 (1)
- jQuery (1)
- split (1)
- iss rewrite (1)
- 踩顶功能ajax (1)
- ext (2)
最新评论
-
longfu2012:
学习了
方法参数前加final的作用 -
irisAndKevin:
你的方法对整除有问题!
java 两数相除 四舍五入 精确 保留2位小数点、任意位小数点 -
wpf523:
...
方法参数前加final的作用 -
wpf523:
不错,解决了我的疑惑
方法参数前加final的作用 -
zhq426:
嗯,挺好用的吧
JAVASCRIPT 取得当前时间,包括农历时间 时间格式:2011年11月8日 16:54 星期二 农历辛卯年(兔) 十月十三 申时
[size=large]Java JDK:自动装箱和拆箱
发布时间:2008-04-10 16:41:31 来源: 作者: 浏览:55
——此文章摘自《Java JDK6学习笔记》定价:¥59.90 特价:¥44.92 购买>>
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。
autoboxing和unboxing
在Java中,所有要处理的东西几乎都是对象 (Object),例如之前所使用的Scanner是对象,字符串(String)也是对象,之后还会看到更多的对象。然而基本(Primitive)数据类型不是对象,也就是您使用int、double、boolean等定义的变量,以及您在程序中直接写下的字面常量。
在前一个小节中已经大致看到了操作对象的方便性,而使用Java有一段时间的人都知道,有时需要将基本数据类型转换为对象。例如使用Map对象要操作put()方法时,需要传入的参数是对象而不是基本数据类型。
要使用打包类型(Wrapper Types)才能将基本数据类型包装为对象,前一个小节中您已经知道在J2SE 5.0之前,要使用以下语句才能将int包装为一个Integer对象:
在 J2SE 5.0之后提供了自动装箱的功能,您可以直接使用以下语句来打包基本数据类型:
在进行编译时,编译器再自动根据您写下的语句,判断是否进行自动装箱动作。在上例中integer参考的会是Integer类的实例。同样的动作可以适用于 boolean、byte、short、char、long、float、double等基本数据类型,分别会使用对应的打包类型(Wrapper Types)Boolean、Byte、Short、Character、Long、Float或Double。下面直接使用自动装箱功能来改写范例 4.4。
范例4.5 AutoBoxDemo.java
程序看来简洁了许多,data1与data2在运行时就是Integer的实例,可以直接进行对象操作。执行的结果如下:
3.3333333333333335
–1
自动装箱运用的方法还可以如下:
也可以使用更一般化的java.lang.Number类来自动装箱。例如:
3.14f会先被自动装箱为Float,然后指定给number。
从J2SE 5.0开始可以自动装箱,也可以自动拆箱(unboxing),也就是将对象中的基本数据形态信息从对象中自动取出。例如下面这样写是可以的:
fooInteger引用至自动装箱为Integer的实例后,如果被指定给一个int类型的变量fooPrimitive,则会自动变为int类型再指定给fooPrimitive。在运算时,也可以进行自动装箱与拆箱。例如:
上例中会显示20与10,编译器会自动进行自动装箱与拆箱,也就是10会先被装箱,然后在i + 10时会先拆箱,进行加法运算;i++该行也是先拆箱再进行递增运算。再来看一个例子:
同样的boo原来是Boolean的实例,在进行AND运算时,会先将boo拆箱,再与false进行AND运算,结果会显示false。[/size]
发布时间:2008-04-10 16:41:31 来源: 作者: 浏览:55
——此文章摘自《Java JDK6学习笔记》定价:¥59.90 特价:¥44.92 购买>>
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。
autoboxing和unboxing
在Java中,所有要处理的东西几乎都是对象 (Object),例如之前所使用的Scanner是对象,字符串(String)也是对象,之后还会看到更多的对象。然而基本(Primitive)数据类型不是对象,也就是您使用int、double、boolean等定义的变量,以及您在程序中直接写下的字面常量。
在前一个小节中已经大致看到了操作对象的方便性,而使用Java有一段时间的人都知道,有时需要将基本数据类型转换为对象。例如使用Map对象要操作put()方法时,需要传入的参数是对象而不是基本数据类型。
要使用打包类型(Wrapper Types)才能将基本数据类型包装为对象,前一个小节中您已经知道在J2SE 5.0之前,要使用以下语句才能将int包装为一个Integer对象:
Integer integer = new Integer(10);
在 J2SE 5.0之后提供了自动装箱的功能,您可以直接使用以下语句来打包基本数据类型:
Integer integer = 10;
在进行编译时,编译器再自动根据您写下的语句,判断是否进行自动装箱动作。在上例中integer参考的会是Integer类的实例。同样的动作可以适用于 boolean、byte、short、char、long、float、double等基本数据类型,分别会使用对应的打包类型(Wrapper Types)Boolean、Byte、Short、Character、Long、Float或Double。下面直接使用自动装箱功能来改写范例 4.4。
范例4.5 AutoBoxDemo.java
public class AutoBoxDemo { public static void main(String[] args) { Integer data1 = 10; Integer data2 = 20; // 转为double值再除以3 System.out.println(data1.doubleValue() / 3); // 进行两个值的比较 System.out.println(data1.compareTo(data2)); } }
程序看来简洁了许多,data1与data2在运行时就是Integer的实例,可以直接进行对象操作。执行的结果如下:
3.3333333333333335
–1
自动装箱运用的方法还可以如下:
int i = 10; Integer integer = i;
也可以使用更一般化的java.lang.Number类来自动装箱。例如:
Number number = 3.14f;
3.14f会先被自动装箱为Float,然后指定给number。
从J2SE 5.0开始可以自动装箱,也可以自动拆箱(unboxing),也就是将对象中的基本数据形态信息从对象中自动取出。例如下面这样写是可以的:
Integer fooInteger = 10; int fooPrimitive = fooInteger;
fooInteger引用至自动装箱为Integer的实例后,如果被指定给一个int类型的变量fooPrimitive,则会自动变为int类型再指定给fooPrimitive。在运算时,也可以进行自动装箱与拆箱。例如:
Integer i = 10; System.out.println(i + 10); System.out.println(i++);
上例中会显示20与10,编译器会自动进行自动装箱与拆箱,也就是10会先被装箱,然后在i + 10时会先拆箱,进行加法运算;i++该行也是先拆箱再进行递增运算。再来看一个例子:
Boolean boo = true; System.out.println(boo && false);
同样的boo原来是Boolean的实例,在进行AND运算时,会先将boo拆箱,再与false进行AND运算,结果会显示false。[/size]
发表评论
-
java 两数相除 四舍五入 精确 保留2位小数点、任意位小数点
2011-11-03 17:53 7226java 四舍五入 精确 保留2位小数点、任意位小数点 ... -
Java中对字符串进行加密和解密
2011-08-18 17:14 17871.引言在实际工作中我们常常会遇到对数据进行加密解密的工作(如 ... -
两个日期之间的天数差
2011-08-11 11:02 1648/** * 两个日期之间的天数差 * @pa ... -
java split 特殊字符 分隔数组
2011-07-28 14:48 2167public class Test { /** ... -
JAVA 取得IP地址
2011-07-21 10:32 1055/** * 取得IP地址 * @param ... -
杯具博客设计
2011-07-08 22:41 888又是遇到了一个悲催的问题。 博客: 博客的设计是这样的: ... -
webservice 同步问题
2011-07-08 22:26 1087今天遇到了一个很郁闷个问题,webservice 同步问题。 ... -
二级栏目树构建
2011-05-30 15:15 827输出栏目树 public class Entr ... -
ttt
2009-10-10 12:50 784<script type="text/ ... -
JXL, POI操作excel文件zz
2009-09-27 11:59 16692008-11-10 JXL, POI操作excel文件z ... -
jxl 写 excel
2009-09-27 11:57 1064package net.blogjava.chenlb;imp ... -
方法参数前加final的作用
2009-07-17 11:01 2588方法参数前加final的作用 2009-06-28 ... -
java 调用ffmpeg执行dos bat命令 带有两个参数
2009-03-12 16:58 3471import java.io.IOException; pu ... -
java 调用ffmpeg执行dos命令
2009-03-12 16:10 1998import java.io.File; import ja ... -
增强Eclipse(MyEclipse)输入代码提示功能
2009-03-02 16:16 1664增强Eclipse(MyEclipse)输入代码提示功能 ... -
myeclipse性能提升技巧
2009-03-02 16:07 951myeclipse性能提升技巧 200 ... -
Java JDK :小心使用 boxing
2008-12-05 18:33 769[size=large]Java JDK :小心使用 boxi ... -
JDK5.0新特性介绍
2008-11-16 19:13 808JDK5.0新特性介绍 [转贴 2006-02-23 15: ... -
java面向对象我基本特征
2008-11-04 15:13 805继承:子类继承父类成为特殊的父类。直接获得父类的属性和方法。是 ... -
两种Java容器类List和Set分析
2008-10-26 21:57 727容器类可以大大提高编程效率和编程能力,在Java2中,所有的容 ...
相关推荐
Java中的自动装箱和拆箱是自JDK 1.5版本引入的一种语言特性,它极大地简化了基础数据类型(如int)与它们对应的包装类(如Integer)之间的转换过程。这一特性使得开发者无需手动创建包装类实例或使用显式类型转换,...
- **自动装箱/拆箱**:JDK6引入了自动装箱和拆箱功能,使得基本类型和其包装类之间的转换更加便捷。 - **可变参数**:允许一个方法接受不定数量的参数,增强了方法的灵活性。 - **增强的for循环(foreach)**:...
JDK 5引入了自动装箱和拆箱的概念,使得基础类型与对应的包装类之间可以无缝转换。例如,int与Integer,无需手动调用`Integer.valueOf()`或`.intValue()`。 2. **枚举类型(Enum)**: 在JDK 5之前,Java没有内置的...
在Java 1.5之前,需要手动进行装箱和拆箱,而1.5之后,系统会自动进行这些转换,提高了代码的简洁性。 5. **变量args(Varargs)** 在方法声明中,可以使用`...`操作符创建可变参数列表,使得方法能够接受任意数量...
3. **自动装箱与拆箱(Autoboxing/Unboxing)**:Java 5.0引入了自动装箱和拆箱机制,使得基础数据类型和对应的包装类之间可以无缝转换。例如,一个整数可以直接赋值给Integer对象,反之亦然,这简化了代码并减少了...
2. **自动装箱/拆箱**:在JDK 5.0中,Java引入了自动装箱和拆箱功能,使得基本类型与对应的包装类之间可以无缝转换,提高了代码的可读性和简洁性。 3. **枚举类型**:枚举是Java中一种新的数据类型,用于定义一组...
1. **自动装箱与拆箱**:JDK 6引入了自动装箱和拆箱功能,使得基本类型与对应的包装类之间可以无缝转换,提高了代码的简洁性和可读性。 2. **枚举类型的switch语句**:Java 6扩展了switch语句,允许使用枚举类型...
1. **自动装箱与拆箱**:Java 6中引入了自动装箱和拆箱功能,使得基本类型和其对应的包装类之间可以无缝转换,提高了代码的简洁性。 2. **增强的for循环(foreach)**:也称为迭代器简化,允许开发者以更简洁的方式...
3. **自动装箱/拆箱**:Java 5.0实现了基本类型与对应的包装器类之间的自动转换,即自动装箱和拆箱。这简化了使用包装器类时的代码,消除了手动转换的必要。 4. **增强的for循环(foreach)**:也称为迭代器简化,...
JDK 1.5引入了自动装箱和拆箱机制,使得基本数据类型(如int)与对应的包装类(如Integer)可以无缝转换。这为开发带来了便利,避免了手动装箱和拆箱可能导致的NullPointerException。 三、枚举(Enums) Java 1.5...
1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = 10;` 和 `int j = i;` 这样的操作在JDK 5后变得非常自然。 2. ...
3. **自动装箱与拆箱**:在JDK6中,基本数据类型和其对应的包装类之间实现了自动装箱和拆箱操作,简化了代码编写,提升了开发效率。 4. **动态代理(Dynamic Proxies)**:动态代理机制允许在运行时创建符合特定...
- **自动装箱与拆箱**:简化了基本类型与包装类之间的转换。 - **注解(Annotation)**:用于元数据,提供编译器和运行时有关代码的附加信息。 3. **PPT简体版** 这部分资源很可能是对以上概念的可视化展示,...
在这个版本中,Java语言进行了重要的更新,包括泛型、枚举、自动装箱/拆箱、变长参数等,极大地提升了开发效率和代码的可读性。接下来,我们将详细探讨这些核心变化以及JDK源代码中的实现细节。 1. **泛型...
例如,JDK 6引入了自动装箱拆箱、foreach循环、可变参数等。掌握这些新特性有助于写出更简洁、高效的代码。 4. **开发工具**:JDK附带了一系列开发工具,如`javac`编译器、`javadoc`文档生成器、`jdb`调试器、`jar`...
Java 5.0引入了自动装箱和拆箱,使得这种转换更加便捷。例如,int和Integer之间的转换可以自动完成,简化了代码。 五、增强的for循环(Enhanced For Loop) 增强的for循环,也被称为foreach循环,使得遍历数组和...
3. **自动装箱与拆箱**:自动装箱和拆箱使得基本数据类型与对应的包装类之间可以无缝切换,简化了代码编写。 4. **增强的for循环(foreach)**:增强的for循环简化了遍历数组和集合的操作,使得代码更加简洁。 5. ...
3. **自动装箱和拆箱**:自动装箱允许基本类型与对应的包装类之间进行无缝转换,简化了代码。 4. **变量args**:在方法声明中使用`...`(可变参数),使得方法可以接受任意数量的相同类型的参数。 5. **增强的for...
自动装箱和拆箱是Java 5.0为了简化编程而引入的特性。它使得基本类型(如int)与对应的包装类(如Integer)之间可以自动转换。这意味着开发者不再需要手动调用如Integer.valueOf()或intValue()这样的方法。 四、可...