包装类(Wrapper)学习总结

1.为什么要使用包装类   

Java中有两种变量(Variable),一种是基本型别(primitive type)的变量,还有一种是类性别(class type)的变量,即对象与非对象两种。有时候我们需要把基本型别包装成对象来使用,例如ArrayList,我们想在其中存放int该怎么办?我们能否这样申明一个ArrayListArrayList<int> list=new ArrayList<>(),答案是否定滴,:(。

幸运的是,java为每一个基本型别都提供了一个相应的包装类(Wrapper)对其进行包装,例如int对应Integerdouble对应Doublechar对应Character等等。我们可以把某个包装类的一个对象当成其对应的基本型别的一个值来看,所不同的是它现在是一个对象了,可以利用reference来进行操作了。

2.包装类的使用

Integer为例进行讲述。包装类的使用比较简单,特别是在JDK5.0中。

Integer i=new Integer(3),这样我们就创建了一个包装类,如果我们想得到它所代表的值就可以通过i.intValue()来获得,其它更多的方法可以参看JDK5.0帮助文档,非常容易理解与使用。需要说明的是,所以的包装类都是final类,并且都是恒定不变(immutable)的,这包含有两个意思:a.任何类不得继承包装类;b.包装类的一个对象一经创建,其所代表的值将不再变化,也就是说我们不能通过某个指向(refer to)它的reference来改变它的值了,直至它被垃圾回收器回收,String类也是这样的。

3.自动打包与解包(JDK5.0新特性)

JDK5.0以前,我们是不能直接将一个基本型别的值直接赋给其对应包装类的一个对象类的,例如Integer i=3,这样做是错误的,但是在5.0中是可以做的了,这句话自动翻译成Integer i=new Integer(3),这叫自动打包。我们还能够直接写i++i进行自增,它的执行过程是首先将i解包成一个整数3(int j=i.intValue()),把它的值加1后再打包回去(j++;i=new Integer(j),此时i应该指向了一个新的Integer对象),这样一来将大大简化我们的代码了。最后,强调一点,能够自动打包与解包要感谢我们的编译器,因为是编译器在编译的时候自动帮我们把打包与解包的代码加进去了,然后编译成字节码

4.自动打包(autoboxing)的一个特征

java中对booleanbyte0~127char-128~127byte/short/int/long进行自动打包时,同一个值都打包成同一个对象。翻译的不好,还是以Integer为例来进行说明,看下面的代码:

Integer i=4;

Integer j=4;

Integer k=new Integer(4);

System.out.println(i==j);//输出将为true

System.out.println(i==k);//输出将为false

输出结果为true false,现在大家应该明白上面这段话的意思了吧,:)

 
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值