您的位置:首页 > 编程语言 > Java开发

jdk1.5的特性

2015-12-02 22:00 369 查看
自动装箱拆箱
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;
       //用String和Integer对比
       String s="100";
      
       //输出的是100对象而不是基本类型的数子
       System.out.println(i);//100
       //可以直接相加减,然后再以对象输出,
       //相当于intm=i.valueOf()+1;Integer in=new Integer(m);然后输出对象
       System.out.println(i+1);//101
       //用String和Integer对比,数据类型不一致,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的用法比较类似。

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

感谢来访,分享无价!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: