Java自动装箱机制和自动拆箱机制

Java的自动装箱和自动拆箱功能

首先得注意基本数据类型和类的区别,也就是Integer和int的区别。注意容器中加入的都是类的对象而不是基本数据类型。故需要先将基本数据类型打包成对象。

Integer i = 100;      编译的时候,编译器会自动将执行以下语法

Integer i = new Integer(100);      经过了自动装箱操作

 

public class AutoBoxDemo1

{

public static voidmain(String[] args)

{

        Integer i1= 127;

        Integer i2= 127;

        if (i1 ==i2)

           System.out.println("i1 == i2");

        else

           System.out.println("i1 != i2");

    }

}  //这个代码最后会显示是正确的,也就是true,因为对于在-128-127之间的数,它们被装箱Integer对象后,会在内存中重用。而==用来表示比较的是同一个对象; 如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象。 (equals()比较的是两个对象的值(内容)是否相同,而==比较的是两个对象的引用(内存地址)是否相同)

 

Integer i = 10;     装箱

int t = i;           拆箱   当然,在运算时,也可以自动装箱和拆箱

System.out.println(i++);

 

 

针对Integer和int的区别主要是:

Int I = 1;      I 后面没有任何方法

Integer I = 1;  I 后面就有好多方法

 

对于String类型的情况:

String str1 ="abc";

           Stringstr2 = "abc";   //这两个是引用,指向同一个对象。

 

String str3 =new String("abc");

           Stringstr4 = new String("abc");   //生成两个对象

 

对于基本数据类型和它的包装类的区别,基本的是两点区别:

Integer是int的包装类,int的初值为0,而Integer的初值为null

Java的intValue()和ValueOf(),前者是将Integer类型转化为int类型,而ValueOf则是将给的参数转化为Integer类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值