天天看點

CoreJava學習3——​基本類型的包裝類

基本類型的包裝類    

   Java語言的8種基本類型分别對應8種“包裝類”,每一種包裝類都封裝了一個對應的基本類型成員變量,同時還提供了一些針對該資料類型的實用方法。

   包裝類是讓基本資料資料以對象的形式存在和使用。

1、編譯器對包裝類的支援

在JDK5之前,使用包裝類進行運算較繁瑣的“拆箱”和“裝箱”操作:即運算前先包裝類對象所封裝的基本資料類型,運算後在将結果封裝成包裝類對象。

   Integer i = Integer.valueOf(100);

   Integer i = Integer.valueOf(200);

   Integer k = Integer.valueOf(i.intValue()+j.intValue());

JDK5增加了自動“拆箱”和“裝箱”的功能,就簡單多了。

   Integer i = 100;

   Integer i = 200;

   Integer k = i+j;

自動“拆箱”和“裝箱”是編譯器的“預處理”操作。

2、Integer和Double常用方法    

  Integer.parseInt(obj):轉換為int或者double,無法解析時候抛出 NumberFormatException    

  Integer.toBinaryString(int);

  Integer.toHexString(int);

  分别把int轉換成二進制和十六進制的字元串序列。

3、BigDecimal類

Java浮點資料類型(float/double)在運算時會有舍入誤差,如果希望得到精确的計算結果,可以使用java.math.BigDecimal類。

       BigDecimal d1 = new BigDecimal("2.5");

       BigDecimal d2 = new BigDecimal("3.6");

       System.out.println(d1.subtract(d2));//減法

       System.out.println(d1.add(d2));//加法

       System.out.println(d1.multiply(d2));//乘法

       //除法

       /*注意:

        *     使用除法要使用舍入原則

        *     否則當遇到無限小數時,會一直除到溢出,無限下去就溢出。

        *     使用BigDecimal.ROUND_HALF_UP 為其四舍五入。

        */

       System.out.println(d1.divide(d2, BigDecimal.ROUND_HALF_UP));

當我們對計算精度有嚴格要求時,會使用該類,不過在大多情況下double足夠。

4、BigInteger類

java提供的整數類型(int和long)的儲存範圍有限,當需要進行在更大的整數運算時可以使用這個類,理論上講BigInteger的儲存範圍之受記憶體容量的限制。

同樣也有加減乘除運算。隻不過隻針對整數運算。

       BigInteger sum = BigInteger.valueOf(1);

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

           //multiply參數要求BigInteger,是以i也要轉換為BigInteger

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

       }

       System.out.println(sum.toString().length());//結果的長度

       System.out.println(sum);

       //試試看有多少光年?

       sum = sum.divide(BigInteger.valueOf(3600*24*360).multiply(BigInteger.valueOf(300000)));