包装类(Wrapper Class)

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

包装类均位于java.lang包,包装类和基本数据类型的对应关系如下:

基本数据类型(包装类)
byte(Byte)
short(Short)
char(Character)
int(Integer)
long(Long)
float(Float)
double(Double)
boolean(Boolean)
 
在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。

对于包装类说,这些类的用途主要包含两种:

    a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

    b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。请看如下代码片段:

 

可见在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换。

关于包装类的自动装箱与拆箱本文不作详细探讨,大家可以通过点击下面地址查看相关信息:

自动装箱(autoboxing)与自动拆箱(unboxing)

 

本文则主要介绍包装类与其他类的区别:
众所周知,“==”和“!=”运算符在比较2个数值型数据时,是比较它们值的大小,而在比较2个引用型数据时,则比较的是2个引用型变量是否指向同一块内存区域,即比较的是2者在内存中所在的地址。
“>”“>=”“<”“<=”是可以用来比较包装类对象的(Boolean类对象除外)。它比较的则不是包装类对象所指向内存中的地址,而是直接比较包装类的数据大小,下面来看一段代码:

由结果不难看出包装类对象在进行比较运算时,“==”和“!=”不是比较数值大小而是比较内存地址值,而“>”“>=”“<”“<=”则是直接比较数值大小。

但是普通类的对象是不允许使用“>”“>=”“<”“<=”运算符来比较大小的,下面以String类为例:

上述代码中,下面4行代码:
 System.out.println("a <= b:" + (a <= b));
 System.out.println("a >= b:" + (a >= b));
 System.out.println("a < b:" + (a < b));
 System.out.println("a > b:" + (a > b));
编译时是会报错的,错误信息如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
 The operator <= is undefined for the argument type(s) java.lang.String, java.lang.String
 The operator >= is undefined for the argument type(s) java.lang.String, java.lang.String
 The operator < is undefined for the argument type(s) java.lang.String, java.lang.String
 The operator > is undefined for the argument type(s) java.lang.String, java.lang.String

另外,前面有提到Boolean类对象是不能使用“>”“>=”“<”“<=”作比较的,原因很简单,查看下Boolean和其他包装类的源代码:
Boolean类源代码:
public final class Boolean implements java.io.Serializable,Comparable<Boolean>

Integer类源代码:
public final class Integer extends Number implements Comparable<Integer>

不难发现Boolean类并没有继承Number类,而其他包装类是由Number类继承来的,所以Boolean类对象是不能使用“>”“>=”“<”“<=”作比较的。在这一点上Boolean类和其他普通类没有任何区别。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值