随笔 - 172  文章 - 0  评论 - 0  阅读 - 11939

Java常用类(七)包装类

       Java是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转换成对象,以便于操作。比如:将基本数据类型存储到Object[]数组或集合中的操作等等。

        为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类,如图:

     在这八个类中,除了Integer和Character类以外,其他六个类的类名和基本数据类型一致,只是类名首字母大写

     在这八个类中,除了Character和Boolean之外,其他的都是“数字型”,“数字型”都是java.lang.Number的子类。Number是抽象类,因此他的抽象方法,所有子类必须提供实现。Number类提供了如下抽象方法:

intValue()

longValue()

floatValue()

doubleValue()

意味着所有的“数字型”包装类都可以互相转型

对于包装类类来说,有以下两种主要用途:

1.作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[],集合等操作

2.包含每种基本数据类型的相关属性如最大值,最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型,包装类对象,字符串之间提供相互之间的转化)

 

我们以Integer为例举例:

自动装箱和自动拆箱:

包装类缓存问题:

  整型,char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。

  缓存处理的原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。

  举例如下:

 

posted on   键盘敲烂的朱  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示