jdk1.5的特性

自动装箱拆箱

JDk1.5的新特性,自动装箱拆箱:

1)        自动装箱:

基本数据类型,直接变成对象,自动完成。

2)        自动拆箱:

对象变成基本数据类型,自动完成。

 

引入案例:

public class ZhuangXiang {

    public static void main(String[] args) {

       //Integer是一个引用类型,而100是个基本类型,100却可以赋值给Integer,这就是自动装箱

       //相当于Integer i=new Integer(100);

       Integer i=100;

       //StringInteger对比

       String s="100";

      

       //输出的是100对象而不是基本类型的数子

       System.out.println(i);//100

       //可以直接相加减,然后再以对象输出,

       //相当于intm=i.valueOf()+1;Integer in=new Integer(m);然后输出对象

       System.out.println(i+1);//101

       //StringInteger对比,数据类型不一致,S+1输出结果1001

       System.out.println(s+1);//1001

    }

}

 

通过上例可以看出Integer和String等其他的引用类型数据不同,它有自己的特性,可以自动实现对象和基本数据类型的转换,但是这里输入的必须是数字类型的字符串,不能输入汉字或者英文。但以上转换仅仅局限于1.5版本以上,换成1.4就报错了。

       面试题:(稍微做了下修改):重点看注释,是否和你想的一样呢

/*

 * 自动装箱和拆箱面试题(做了一些小变动)

 */

public class ZiDongChaiXiang {

    public static void main(String[] args) {

       String a = "200";

       String b = "200";

       //引用类型中,== 比较的是对象地址,以上两个都在方法区的常量区使用了同一个常量,所有地址一样

       System.out.println("a==b  "+(a==b));//true

       //Integer类继承Object,重写方法equals,没有比较地址,比较的是对象中具体数值

       System.out.println("a.equals(b)"+a.equals(b));//true      

      

       Integer aa = new Integer(100);

       Integer bb = new Integer(100);

      

       System.out.println("aa==bb"+(aa==bb));//ture看到new,一般不用在考虑,

       //因为new就是在堆内存中为不同的对象开辟了不同空间

       System.out.println("aa.equals(bb)"+ aa.equals(bb));//true

      

       Integer aaa = 300;

       Integer bbb = 300;

      

       System.out.println("aaa==bbb"+(aaa==bbb));//false

       System.out.println("aaa.equals(bbb)"+ aaa.equals(bbb));//true

      

       /*

        * 自动装箱中,取值范围在byte之内 -128 127

        *JVM不会从新开启内存空间

        *Integer i = 127;  i = new Integer(127)

        *Integer j = i;   

        */

       Integer i = 127;

       Integer j = 127;// j=i

       System.out.println("i==j"+(i==j));//true

       System.out.println("i.equals(j)"+i.equals(j));//true

    }

}

 

这个自动装箱和拆箱以后会用的很频繁,所有这个功能建议数量掌握,另外一定要记得它的特殊情况,如果int类型的值范围在byte之间那么jvm是不会从新开辟内存空间的,这一点和String的用法比较类似。

           这就是个人对装箱拆箱原理的一点拙见,欢迎大家来访,如有不足,敬请指正。

感谢来访,分享无价!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值