Java核心API -- 5(包装类、BigDecimal、BigInteger)


1. 包装类java

    Java语言的8种基本类型分别对应了8种“包装类”。每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了针对该数据类型的实用方法,包装类使用前提:JDK1.5+。ide

    1)包装类的目的:用于将基本类型数据看成引用类型看待。spa

    2)包装类的名字:除了Integer(int),Character(char)外,其他包装类名字都是基本类型名首字母大写。orm

    3)装箱:基本类型转为对象类型对象

        方式一:Double d=new Double(2.2);//装箱ip

        方式二:Double d=Double.valueOf(2.2);//基本类型对应的包装类都有valueOf方法内存

    4)拆箱:对象类型转为基本类型ci

        double num=d.doubleValue();//拆箱字符串

    5)JDK1.5包装类自动拆装箱(原理):在编译源程序的时候,编译器会预处理,将未做拆箱和装箱工做的语句自动拆箱和装箱。编译器

        Integer i = 10;  //自动装箱,基本类型直接赋值给对象,实际已经执行了 Integer i = Integer.valueOf(10);

        int num = i; //自动拆箱,对象类型直接赋值给基本类型,实际上执行了 int num = i.intValue();

    6)包装类的一些经常使用功能:将字符串转换为其类型,方法是:parseXXX,XXX表明其类型。这里要特别注意!必定要保证待转换的字符串描述的确实是或者兼容要转换的数据类型!不然会抛出异常!

         String numStr="123";

         System.out.println(numStr+1);//1231

         int num=Integer.parseInt(numStr);

         System.out.println(num+1)//124

         long longNum=Long.parseLong(numStr);

         System.out.println(longNum);//123

         double doubleNum=Double.parseDouble(numStr);  

         System.out.println(doubleNum);//123.0

    7)Integer提供了几个方法:将一个整数转换为16进制的形式,并以字符串返回;将一个整数转换为2进制的形式,并以字符串返回。

        String bStr=Integer.toBinaryString(num);

        String hStr=Integer.toHexString(num);

    8)全部包装类都有几个共同的常:获取最大、最小值。

        int max=Integer.MAX_VALUE;//int最大值   

        int min=Integer.MIN_VALUE;//int最小值

        System.out.println(Integer.toBinaryString(max));

        System.out.println(Integer.toBinaryString(min));


2. BigDecimal类

    表示精度更高的浮点型,在java.math.BigDecimal包下,该类能够进行更高精度的浮点运算。须要注意的是,BigDecimal能够描述比Double还要高的精度,因此在转换为基本类型时,可能会丢失精度!

    1)BigDecimal的使用:

        建立一个BigDecimal实例,能够使用构造方法BigDecimal(String numberFormatString),用字符串描述一个浮点数做为参数传入。 

        BigDecimal num1=new BigDecimal("3.0");

        BigDecimal num2=new BigDecimal("2.9"); //运算结果依然为BigDecimal表示的结果

        BigDecimal result=num1.subtract(num2);//num1-num2 System.out.println(result);

        float f=result.floatValue();//将输出结果转换为基本类型float

        int i=result.intValue();//将输出结果转换为基本类型int

    2)BigDecimal能够做加add、减subtract、乘multiply、除divide等运算:这里须要注意除法,因为除法存在结果为无限不循环小数,因此对于除法而言,咱们要制定取舍模式,不然会一直计算下去,直到报错(内存溢出)。

        result=num1.divide(num2, 8, BigDecimal.ROUND_HALF_UP); // 小数保留8位,舍去方式为四舍五入 


3. BigInteger类

    使用描述更长位数的整数“字符串”,来表示、保存更长位数的整数,在java.math.BigInteger包下。

    1)BigInteger的使用:

        // 建立BigInteger  

        BigInteger num=new BigInteger("1");

        //num=new BigInteger(1); // 不能够,没有这样的构造器 

        //这种方式咱们能够将一个整数的基本类型转换为BigInteger的实例

        num=BigInteger.valueOf(1);

    2)理论上:BigInteger存放的整数位数只受内存容量影响。

    3)BigInteger一样支持加add、减subtract、乘multiply、除divide等运算。

        for(int i=1;i<=200;i++){

            num=num.multiply(BigInteger.valueOf(i));  

        }

        System.out.println("结果"+num.toString().length()+"位");

        System.out.println(num);

相关文章
相关标签/搜索