JAVA 包装类, 自动装箱 拆箱。

java中除了基本数据类型还有引用类型两种。

为了体现java面向对象的思想,容易对基本数据类型进行操作,所以产生了包装类(Wrapped class)。

int 的包装类是 Integer , double 是Double ,long 的是Long....

在JDK1.5 之前 ,我们声明一个数据类型的对象以Integer为例 如下:

Integer i = new Integer(1000);  通过构造函数来把1000这个值传给对象i . 

因为如果每次我们创建一个包装类对象的时候每次都new的话很麻烦,所以JDK 1.5之后 工作人员在对代码进行编译的时候动了手脚,凡是遇到右边是 基本数据类型,左边是包装类 想对应的。就会默认为我们进行小操作 。如下

Integer i =1000 ; 这样写就可以了,因为工作人员已经帮我们做了如下处理 Integer i =new Integer(1000);从而减少了程序员的输入量。不过道理还是新建一个Integer对象。这就是所谓的自动装箱(Auto Boxing)

同样也有自动拆箱(unbox)

在Integer中如果想把一个Integer类型转为 int类型,如下:

int a= new Integer(1000).intValue();  

在JDK 1.5 之后我们只需要写  int a = new Integer(1000);就可以了

但是有一个例外 数值在 [-128,127]之前的数值不会进行自动装箱,拆箱,原因是为了提高运行效率,因为基本数据类型的效率比较高。 如:

Integer i = 10000;

Integer i2=10000;

System.out.println(i==i2) //结果为false 超过127了,自动装箱当作对象来处理,比较对象地址是否相等

Integer i = 100;

Integer i2=100;

System.out.println(i==i2) //结果为true 因为是基本数据类型了 只会比较他们的值

转载于:https://my.oschina.net/u/3138201/blog/834341

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值