码迷,mamicode.com
首页 > 其他好文 > 详细

欢迎使用CSDN-markdown编辑器

时间:2015-02-18 16:29:16      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:面向对象   包装类   

5.1 java8增强的包装类
自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能

package code;
public class AutoBoxUnboxing{
    public static void main(String [] args){
        //直接把一个基本类型变量赋给Integer对象
        Integer inObj = 5;
        //直接把一个boolean类型变量赋给一个Object类型的变量
        Object boolObj = true;
        //直接把一个Integer对象赋给int类型的变量
        int it = inObj;
        if(boolObj instanceof Boolean){
            //先把Object对象强制类型转换为Boolean类型,再赋给boolean变量
            boolean b = (Boolean)boolObj;
            System.out.println(b);
        }
    }
}

当JDK提供了自动装箱和自动拆箱功能后,大大简化了基本类型变量和包装类对象之间的转换过程

把字符串类型的值转换为基本类型的值有两种方式:
1.利用包装类提供的parseXxx(String s )的静态方法,(除了Character);
2.利用包装类提供的Xxx(String s )构造器
将基本类型变量转换为字符串:
利用String类提供的多个重载valueOf()方法

package code;
public class Primitive2String{
    public static void main(String[] args){
        String intStr = "123";
        //把一个特定字符串转换成int类型
        int it1 = Integer.parseInt(intStr);
        int it2 = new Integer(intStr);
        System.out.println(it1);
        System.out.println(it2);

        String floatStr = "4.56";
        float ft1 = Float.parseFloat(floatStr);
        float ft2 = new Float(floatStr);
        System.out.println(ft1);
        System.out.println(ft2);

        String ftStr = String.valueOf(2.345f);
        System.out.println(ftStr);

        //把一个boolean变量转换成String变量
        String boolStr = String.valueOf(true);
        System.out.println(boolStr.toUpperCase());
    }
}

如果希望将基本类型装换成字符串,直接将基本类型和”“进行连接运算,系统会自动把基本类型变量转换成字符串,

package code;
public class WrapperClassCompare{
    public static void main(String[]args){
        Integer a = new Integer(6);
        System.out.println("6的包装类实例是否大于5.0" + (a > 5.0));

        System.out.println("比较两个包装类的实例是否相等" + (new Integer(2) == new Integer(2)));

        //通过自动装箱,允许把基本类型赋值给包装类实例
        Integer ina = 2;
        Integer inb = 2;
        System.out.println("两个2自动装箱后是否相等:" + (ina == inb));//true
        Integer biga = 128;
        Integer bigb = 128;
        System.out.println("两个128自动装箱后是否相等:" + (biga == bigb));//false

        //两个boolean类型比较时,true>false
        System.out.println(Boolean.compare(true,false));
        System.out.println(Boolean.compare(true,true));
        System.out.println(Boolean.compare(false,true));
    }

}

系统把一个-128~127之间的整数自动装箱成Integer实例,并放入一个名为cache的数组中缓存起来,如果以后把-128~127之间的整数自动装箱成一个Integer实例时,实际上是直接指向对应的数组元素,所以全部相等,但每次把一个不在-128~127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以出现上述结果

package code;
public class UnsignedTest{
    public static void main(String[]args){
        byte b = -3;
        //将byte类型的-3转换为无符号整数
        System.out.println("byte类型的-3对应的无符号整型是" + Byte.toUnsignedInt(b));
        //指定使用十六进制解析无符号整数
        int val = Integer.parseUnsignedInt("ab", 16);
        System.out.println(val);
        //将-12转换为无符号int型,然后转换为十六进制的字符串
        System.out.println(Integer.toUnsignedString(-12,16));
        //将两个数转换为无符号整数后相除
        System.out.println(Integer.divideUnsigned(-4,2));
        //将两个数转换为无符号整数相除后求余
        System.out.println(Integer.remainderUnsigned(-2,7));
    }
}

欢迎使用CSDN-markdown编辑器

标签:面向对象   包装类   

原文地址:http://blog.csdn.net/u014270902/article/details/43877199

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!