自动装箱,string new和直接赋值的区别

有时,需要将基本类型转换成为对象。所以便有了包装器类型。

例如:

Integer-------------------------------------------int

Double-------------------------------------double

Float--------------------------------------------float

Short------------------------------------------short

Byte---------------------------------------------byte

Character-------------------------------------char

Boolean----------------------------------boolean

Long--------------------------------------------long

包装器类型是immutable类型的,并且还是final的,因此不能派生它们的子类。

用途:类的尖括号中的类型参数不能是基本类型,所以此时就要使用包装器类型了。

基本类型可以通过自动装箱变成包装器类型。

例如:

list.add(3)//将自动变成
list.add(Integer.valueOf(3));

此外,当一个Integer类型对象赋给一个int值时,则会进行自动拆箱。

例如:

int n=list.get(i);
//将自动转换为
int n=list。get(i).intValue();

自动装箱和自动拆箱同样也适用于算数表达式。比如:

Integer n=3;
    n++;

编译器会自动插入一条对象拆箱命令,然后执行自增运算,最后再将结果装箱。

==也适用于包装器类型,不过是判断是否指向同一个对象空间。

但要注意:

1.自动装箱规范要求boolean,byte,char要小于等于127.

2.[-128.127)之间的int和short,相同的值会被包装到相同且固定的对象中,不同的值会被包装到不同且固定的对象中。此时是调用的是valueOf方法(一般调用这个方法进行装箱)。但是当超出这个范围valueOf方法就会new一个新的对象。

3.若在一个表达式中混合使用Integer和Double类型,Integer类型会被自动拆箱,然后提升为double,再包装为Double

4.装箱和拆箱是编译器的工作,而不是虚拟机。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值