1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
包装器类

Java包装器类 我们知道,所有对象型的数据类型的基类是java.lang.Object。而写java程序的时候非常多的工作都是在写这些类,和实现里面的方法。而偏偏就有那么8种基本类型和他们不一样。以至于让你来回在这两种之间转换,只是很让人头疼的事情。Java中的int , long , char这样的类型不是对象型。因此,java里提供了一种叫做包装类(wrapper)的东西,是基本类型,有着相应的对象类型Integer , Long , Character等。表1列出了java API中的包装器类: 基本类型 包装器类 构造函数变元 boolean Boolean boolean或String byte Byte byte或String char Character char double Double double或String float Float float、double或String int Integer int或String long Long long或String short Short short或String Java中的包装器类有两个主要的目的: 1.提供一种机制,将基本值“包装”到对象中,从而使基本值能够包含在为对象而保留的操作中,比如添加到Collections 中,或者从带对象返回值的方法中返回。注意,java5增加了自动装箱和拆箱,程序员过去需手工执行的许多包装操作,现在可以由java自动处理了。 2.为基本值提供分类功能。这些功能大多数于各种转换有关:在基本值和String 对象间相互转换,在基本值和String 对象之间按不同基数转换,如二进制、八进制和十六进制。 基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。看下面的例子:public class Test1 { public static void main(String[] args) { //装箱 int i = 0; Integer integer = i;//i这么一个基本类型的数,可以赋值给Integer型的变量 //简单的拆箱 int j = integer;//integer这种类型的数,也能赋值给j这个原始类型的变量 Integer counter = 1; //装箱 int counter2 = counter; //拆箱 while (counter 100) { System.out.println(计数 +counter++); //看啊,counter这个对象型的数,还能自动增加 } }在幕后JVM已经自动执行了转换,同理Boolean和boolean之间也可以,自动拆箱装箱。但是,Integer和int毕竟还是有着不同的。java 自动装箱与拆箱 中的陷阱 自动装箱与拆箱的功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的语法,决定是否进行装箱或拆箱动作。例如: 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错误。 自动装箱、拆箱的功能提供了方便性,但隐藏了一些细节,所以必须小心。再来看范例4.6,您认为结果是什么呢? ü 范例4.6 AutoBoxDemo2.java public class AutoBoxDemo2 { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; if (i1 == i2) System.out.println(

文档评论(0)

80019pp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档