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);

相關文章
相關標籤/搜索