JAVA包装类及其用法

上传人:鲁** 文档编号:484576628 上传时间:2023-12-28 格式:DOCX 页数:14 大小:75.03KB
返回 下载 相关 举报
JAVA包装类及其用法_第1页
第1页 / 共14页
JAVA包装类及其用法_第2页
第2页 / 共14页
JAVA包装类及其用法_第3页
第3页 / 共14页
JAVA包装类及其用法_第4页
第4页 / 共14页
JAVA包装类及其用法_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《JAVA包装类及其用法》由会员分享,可在线阅读,更多相关《JAVA包装类及其用法(14页珍藏版)》请在金锄头文库上搜索。

1、我们在前面的文章中详细的写了关于类,对象的基本语法,JAVA也提供了一些高 级类特性。JAVA为8个基本类型提供了对应的包装类,通过这些包装类可以把8个基本类型 的值包装成对象使用,JDK1.5提供了自动装箱和自动拆箱,允许把基本类型值直接赋给对 应的包装类引用变量,也允许把包装类对象直接赋给对应的基本类型变量。JAVA提供了 final关键字来修饰变量,方法和类,系统不允许为final变量重新 赋值,子类不允许覆盖父类的final方法,final类不能派生子类。通过使用final关键字,允 许JAVA实现不可变类,不可变类会让系统更加安全.abstract和interface两个关键字分别用

2、于定义抽象类和接口,抽象类和接口都是从 多个子类中抽象出来的共同物征。但抽象类主要作为多类类的模板,而接口则定义了多类应 该遵守的规范。enum关键字则用于创建枚举类,枚举类是一种不能自由创建对象的类,枚 举类的对象在定义类时已经固定下来。枚举类特别适合定义像行星,季节这样的类,它们能 创建的实例是有限且确定的。我们现在先看下基本数据类型的包装类JAVA是面向对象的编程语言,但它也包含了8种基本数据类型,这8个基本数据类型 不支持面向对象的编程机制,基本数据类型的数据也不具备对象”的特性:没有属性,方法 可以被调用。JAVA之所以提供这8种基本数据类型,主要是为了照顾程序员传统的习惯。这8种基

3、本数据类型带来了一定的方便之处,例如可以进行简单,有效的常规数据处理。 但在某些时候,基本数据类型就有一些制约,例如所有引用类型的变量都继承了 Object类, 都可当成Object类型变量使用。但基本数据类型的变量就不可以,如果有个方法需要Object 类型的参数,但实际需要的值却是2, 3等,这可能就比较难以处理。为了解决8个基本数据类型的变量不能当成Object类型变量使用的问题,JAVA提供了 包装类(Wrapper Class)的概念,为了8个基本数据类型分别定义了相应的引用类型,并称 之为基本数据类型的包装类。描述了基本数据类型和包装类之间的对应关系:表足1基本数据类型和包装类的对

4、应基本数摒炎型byleByteshortShortmtlitterlongLfiBgChaiwtrrfloatFIdeudoubleDoublebooleanBodIkui从表6.1可以看出,除了 int和char两个有点例外之外,8个基本类型对应的包装类都是将其 首字母大写即可。把基本数据类型变量包装成包装类实例是通过对应包装类似构造器来实现的,不仅如此,8 个包装类中除了 Character之外,还可以通过传入一个字符串参数来构建包装类对象。那么我们该如何把基本类型变量转换成对应包装类对象,以及如何把一个字符串包装成包装 类对象呢?看代码:public class Primitive2Wr

5、apperpublic static void main(String args)boolean b1 = true;通过构造器把b1基本类型变量包装成包装类对象Boolean blobj = new Boolean(b1);int it =5;通过构造器把it基本类型变量包装成包装类对象Integer itobj = new Integer(it);把一个字符串转换成Float对象Float f1 = new Float(4.56);把一个字符串转换成Boolean对象Boolean bobj = new Boolean(false);下面程序运行时将出现java.lang.NumberFo

6、rmatException异常/Long lobj = new Long(ddd);取出Boolean对象里的boolean变量 boolean bb = bobj.booleanValue();取出Integer对象里的int变量int i = itobj.intValue();取出Float对象里的float变量float f = f1.floatValue();上面的程序分别可以把true,5等基本类型变量包装成包装类对象。除此之外,上面程序还通 过向包装类构造器里传入一个字符串参数,分别利用4.56,false等字符串为创建包装类对 象。在上面程序的最后一行:Long lObj = n

7、ew Long(ddd);,这行代码试图把ddd字符串转 换成Long类型变量,这行代码编译时没有问题,但运行时会引发 java.lang.NumbwrFormatException 异常。当试图使用一个字符串来创建Byte ,Short ,Integer,Long,Float,和Double等包装类对象 时,如果传入的字符串不能成功转换成对应基本类型变量,则会引发 java.lang.NumberFormatException 异常。如果试图使用一个字符串来创建Boolean对象时,如果传入的字符串是“true”或此字符串 不同字母的大小写变化形式,如True,都将创建true对应的Bool

8、ean对象;如果传入其他 字符串,则会创建false对应的Boolean对象。我们可以看出基本类型变量和包装类对象的关系:iliinew WrapperCiass(pnmitive)feiMISilWrapperinstance.xxxValueQi图6基本类型变蛍和包装类对象之间的转换从图中我们可以看出:JAVA提供的基本类型变量和包装类对象之间转换有点繁琐,但从 JDK1.5之后就清除了,JDK1.5提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功 能,所谓自动装箱,就是可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给 Object变量(Objectj

9、是所有类的父类,子类对象可心直接赋给父类变量)自动拆箱则与之 相反,允许直接把包装类对象直接赋给一个对应的基本类型变量。看代码:public class AutoBoxingUnboxingpublic static void main(String args)直接把一个基本类型变量赋给Integer对象Integer inobj = 5;直接把一个boolean类型变量赋给一个object类型的变量Object boolobj = true;直接把一个Integer对象赋给int类型的变量int it = inobj;if(boolobj instanceof Boolean)先把objec

10、t对象强制类型转换为Boolean类型,再赋给boolean变量boolean b = (Boolean)boolobj;System.out.println(b);编译结果为:C: MJsersAdninistratorDesktopcodes066.ljauac AutoBoxingUnboxing.JavaC: MJsersAdministratorDesjaua AutoBoxingUnboxing true我们可以知道,当JDK提供了自动装箱和自动拆箱后,大大简化了基本类型变量和包装类 对象之间的转换过程。值得指出的是,进行自动装箱和自动拆箱时必须注意类型匹配,例如 Integer只

11、能自动拆箱成int类型的变量,不要试图拆箱成boolean类型的变量;与之在似的 是, Int类型的变量只能自动装箱成Integer对象(即使赋给Object类型的变量,那只是利用 了 JAVA的向上自动转型特性),不要试图装箱Boolean对象。除此之外包装类还可实现基本类型变量和字符串之音的转换,除了 Character之外的怕用包装类都提 供了一个parsexxx(String s)静态方法,用于将一个特定字符串转换成基本类型变量;除此之 外,在String类里也提供了多个重载valueOf()方法,用于将基本类型变量转换成字符串, 看代码: public class Primitive

12、2Stringpublic static void main(String args)String intStr = 123;把一个特定字符串转换成int变量int it = Integer.parseInt(intStr); System.out.println(it 的结果是:+it);String floatStr = 4.56;把一个特定字符串转换成float变量 float ft = Float.parseFloat(floatStr);System.out.println(ft);把一个float变量转换成string变量 String ftStr = string.valueOf

13、(2.345f);System.out.println(ftStr);把一个double变量转换成String变量 String dbStr = string.valueOf(3.344);System.out.println(dbStr);把一个boolean变量转换成String变量 String boolStr = String.valueOf(true); System.out.println(boolStr.toUpperCase();看下编译结果:C:UsersAdministratorXDesktopXcodes066-1jauac Prinitiue2String-jauaC:

14、 XUsersXAdministiatorDesktopXcodes066 -ljaua Primitiue2Stiing 辻丄的结果是:1234.562.3453.344fRUE通过上面程序可以看出基本类型变量和字符串之间的转换关系iS过SMng vafueOffixirnitiveJftiftiSWiapperCiass. parseXxx法6.2基本类型变量和String之间的转换如果希望把基本类型变量转换成字符串,还有一种更简单的方法:将基本类型变量和进行 连接运算,系统会自动把基本类型变量转成字符串,/intStr 的值为5String intStr = 5 + ;这样就OK 了我们

15、现在也可以看出来一点就是我们在慢慢地介绍JAVA中的类库是的方法了,我们也开始 会经常查看JDK开发文档了。处理对象:JAVA对象都是Object类的实例,都可直接调用该类中定义的方法,这些方法提供了处理JAVA对象的通用方法。打印对象和toString方法看代码:class Personprivate String name;public Person(String name)this.name = name;public void info()System.out.println(”此人名为:+name);public class PrintObjectpublic static void main(String args)创建一个Person对象,将值赋给P变量 Person p = new Person(世界您好!);打印P所引用的Person对象 System.o

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号