java8增强的包装类

来源:互联网 发布:淘宝一千零一夜活动 编辑:程序博客网 时间:2024/06/06 15:01

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));    }}
0 0
原创粉丝点击