2007-03-03
wrpper class
《TIJ》第二章 72页
问题:
什么时候需要用到wrapper class?
解答:
1.在Java中,所有要处理的东西几乎都是对象(Object),而使用Java有一段时间的人都知道,有时需要将基本数据类型转换为对象。
例如使用ArrayList的add方法、使用Map对象要操作put()方法时,需要传入的参数都是对象而不是基本数据类型。
要使用打包类型(Wrapper Types)才能将基本数据类型包装为对象,前一个小节中您已经知道在J2SE 5.0之前,要使用以下语句才能
将int包装为一个Integer对象:
Integer integer = new Integer(10);
在 J2SE 5.0之后提供了自动装箱的功能,您可以直接使用以下语句来打包基本数据类型:
Integer integer = 10;
2. 小心使用 boxing
自动装箱与拆箱的功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的语法,决定是否进行装箱或拆箱动作。例如:
Integer i = 100;
相当于编译器自动为您作以下的语法编译:
Integer i = new Integer(100);
所以自动装箱与拆箱的功能是所谓的“编译器蜜糖”(Compiler Sugar),虽然使用这个功能很方便,但在程序运行阶段您得了解Java的语义。例如下面的程序是可以通过编译的:
Integer i = null;
int j = i;
这样的语法在编译时期是合法的,但是在运行时期会有错误,因为这种写法相当于:
Integer i = null;
int j = i.intValue();
null表示i没有参考至任何的对象实体,它可以合法地指定给对象参考名称。由于实际上i并没有参考至任何的对象,所以也就不可能操作intValue()方法,
这样上面的写法在运行时会出现NullPointerException错误。
3.Once assigned a value, the value of a wrapper class cannot be changed
If you get questions on the exam that involve methods like Integer.setInt(int i) you can be confident it is a bogus code that is incorrect.
4.The methods of the wrapper classes are all static.
5.Utility methods
One of the most useful type of wrapper utility methods are the parseXX methods that turn a String
that can represent a number into the primitive version of that number.
参考资料:
1.The wrapper classes
http://www.jchq.net/certkey/0803certkey.htm
2. Java JDK 5.0学习笔记 4.2 自动装箱和拆箱
http://book.csdn.net/bookfiles/135/1001354614.shtml
问题:
什么时候需要用到wrapper class?
解答:
1.在Java中,所有要处理的东西几乎都是对象(Object),而使用Java有一段时间的人都知道,有时需要将基本数据类型转换为对象。
例如使用ArrayList的add方法、使用Map对象要操作put()方法时,需要传入的参数都是对象而不是基本数据类型。
要使用打包类型(Wrapper Types)才能将基本数据类型包装为对象,前一个小节中您已经知道在J2SE 5.0之前,要使用以下语句才能
将int包装为一个Integer对象:
Integer integer = new Integer(10);
在 J2SE 5.0之后提供了自动装箱的功能,您可以直接使用以下语句来打包基本数据类型:
Integer integer = 10;
2. 小心使用 boxing
自动装箱与拆箱的功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的语法,决定是否进行装箱或拆箱动作。例如:
Integer i = 100;
相当于编译器自动为您作以下的语法编译:
Integer i = new Integer(100);
所以自动装箱与拆箱的功能是所谓的“编译器蜜糖”(Compiler Sugar),虽然使用这个功能很方便,但在程序运行阶段您得了解Java的语义。例如下面的程序是可以通过编译的:
Integer i = null;
int j = i;
这样的语法在编译时期是合法的,但是在运行时期会有错误,因为这种写法相当于:
Integer i = null;
int j = i.intValue();
null表示i没有参考至任何的对象实体,它可以合法地指定给对象参考名称。由于实际上i并没有参考至任何的对象,所以也就不可能操作intValue()方法,
这样上面的写法在运行时会出现NullPointerException错误。
3.Once assigned a value, the value of a wrapper class cannot be changed
If you get questions on the exam that involve methods like Integer.setInt(int i) you can be confident it is a bogus code that is incorrect.
4.The methods of the wrapper classes are all static.
5.Utility methods
One of the most useful type of wrapper utility methods are the parseXX methods that turn a String
that can represent a number into the primitive version of that number.
参考资料:
1.The wrapper classes
http://www.jchq.net/certkey/0803certkey.htm
2. Java JDK 5.0学习笔记 4.2 自动装箱和拆箱
http://book.csdn.net/bookfiles/135/1001354614.shtml
发表评论
- 浏览: 21061 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
ChartDirector与JFreeCha ...
中文问题参见:http://www.blogjava.net/Vencent/a ...
-- by VincentChen -
log4j配置webapp日志系统
谢谢 楼主 收藏一下 以备查看
-- by sprite -
use japerreports step by ...
抱歉哦,我这两天刚刚开始接触jasperreports,刚能把它跑起来,还不会分 ...
-- by flysky -
use japerreports step by ...
如何换页,或者控制每页行数 英雄是否知晓?
-- by southgate






评论排行榜