《Java核心技術卷1》拾遺

  以前對Java的基礎知識有過學習,如今開始學習《Java核心技術卷1》,將一些新學的知識點,作簡要記錄,以備後續回顧:java

 

一、double數組

(1)全部的「非數值」都認爲是不相同的ide

if(x==Double.NaN)  //永遠是true

(2) 能夠經過Double.isNaN 來判斷是否是「非數值」工具

public static void main(String[] args) {      int a=9; float c=3.4f; double d=5.6D; System.out.println(Double.isNaN(d)); //false
        System.out.println(Double.isNaN(c)); //false
        System.out.println(Double.isNaN(a)); //fasle }

(3)  常量 學習

 1 public class Main {  2 
 3     public static void main(String[] args) {  4         System.out.println(1.1/0);//結果是:Infinity 就是常量Double.POSITIVE_INFINITY
 5         System.out.println(-1.1/0);//結果是:-Infinity 就是常量Double.NEGATIVE_INFINITY
 6         System.out.println(0/3.2);//結果是:0.0
 7         System.out.println(Math.pow(-0.2,0.5));//結果是:NaN 就是常量Double.NaN
 8         System.out.println(1/0);//結果是:Exception in thread "main" java.lang.ArithmeticException: / by zero
 9  } 10 }

 

二、Mathspa

(1) Math使用時候,能夠不帶「Math」 前綴,添加導入靜態包3d

import static java.lang.Math.*; public class Main { public static void main(String[] args) { System.out.println(pow(-0.2,0.5)); } }

(2) Math的計算結果並不徹底可預測,首先是保證了速度。若是須要一個全部平臺相同的結果的數據,推薦使用 StrictMathcode

 

三、數值類型轉化對象

 

 

 

 四、枚舉型blog

public class Main { public static void main(String[] args) { enum Size {XL,L,M,M,S}; Size s=Size.M; } }

 

 

 五、字符串

(1) 字符串之間的比較不能用==,可是字符串常量能夠,應爲虛擬機將相同的字符串常量共享

(2) 空串是一個Java對象,有長度和內容。String也能夠被賦值null,表示沒有任何對象與該String變量關聯

(3) 字符串打印,能夠用C語言的printf()

System.out.printf("你好啊!%s,我今年%d歲","小貓",10);//你好啊!小貓,我今年10歲

 

 

 (6)  流程控制

標籤可使用在for、while、if 和代碼塊以前

public class Main { public static void main(String[] args) { int i=8; W:while(i<19){ i++; System.out.print("i="+i); J:{ if (i - 8 >= 5) break J; System.out.print("*******"); } System.out.println("-----------"); } } }

結果:

i=9*******-----------
i=10*******-----------
i=11*******-----------
i=12*******-----------
i=13-----------
i=14-----------
i=15-----------
i=16-----------
i=17-----------
i=18-----------
i=19-----------

 

(7) 大數值

若是基本的整數和浮點數精度不可以知足需求,那麼可使用java.math包中的BigInteger和BigDecimal。這兩個類能夠處理包含任意長度數字序列的數值。BigInteger類實現了任意精度的整數運算,BigDecimal實現了任意精度的浮點數運算。

使用靜態方法valueOf方法能夠將普通的數值轉換爲大數值:

 

     BigInteger a=BigInteger.valueOf(100); BigInteger b = new BigInteger("2"); System.out.println(a.add(b));//+
        System.out.println(a.pow(2));//次方
        System.out.println(BigInteger.valueOf(-100).abs());//絕對值
        System.out.println(a.compareTo(b));//兩個數做比較
        System.out.println(a.divide(b));//除法
        System.out.println(a.mod(b));//取餘
        System.out.println(a.remainder(b));//取餘
        System.out.println(a.equals(b));//比較,返回布爾
        System.out.println(a.intValue());//int值
        System.out.println(a.min(b));//返回小的值
        System.out.println(a.multiply(b));//乘法
        System.out.println(a.toString(5));//此方法返回此BigInteger在給定的基數的字符串表示形式。
        System.out.println(a.subtract(b));//減法
        System.out.println(a.longValue());//long
        System.out.println(a.max(b));//返回大的

102
10000
100
1
50
0
0
false
100
2
200
400
98
100
100

 

 

浮點型:

 

     BigDecimal a=BigDecimal.valueOf(100.5); BigDecimal b = new BigDecimal("2.3"); System.out.println(a.add(b));//+
        System.out.println(a.pow(2));//次方
        System.out.println(a.compareTo(b));//兩個數做比較
        System.out.println(a.divide(b,5,BigDecimal.ROUND_DOWN));//除法
        System.out.println(a.remainder(b));//取餘---餘的是個小數
        System.out.println(a.equals(b));//比較,返回布爾
        System.out.println(a.intValue());//int值
        System.out.println(a.min(b));//返回小的值
        System.out.println(a.multiply(b));//乘法
        System.out.println(a.subtract(b));//減法
        System.out.println(a.longValue());//long
        System.out.println(a.max(b));//返回大的

102.8
10100.25
100
1
43.69565
1.6
false
100
2.3
231.15
98.2
100
100.5

 

 

 

其中,divide() 方法的 3 個參數分別表示除數、商的小數點後的位數和近似值處理模式。

 

 

表2 roundingMode參數支持的處理模式
模式名稱 說明
BigDecimal.ROUND_UP 商的最後一位若是大於 0,則向前進位,正負數都如此
BigDecimal.ROUND_DOWN 商的最後一位不管是什麼數字都省略
BigDecimal.ROUND_CEILING 商若是是正數,按照 ROUND_UP 模式處理;若是是負數,按照 ROUND_DOWN
模式處理
BigDecimal.ROUND_FLOOR 與 ROUND_CELING 模式相反,商若是是正數,按照 ROUND_DOWN 模式處理;
若是是負數,按照 ROUND_UP 模式處理
BigDecimal.ROUND_HALF_ DOWN 對商進行五舍六入操做。若是商最後一位小於等於 5,則作捨棄操做,不然對最後
一位進行進位操做
BigDecimal.ROUND_HALF_UP 對商進行四捨五入操做。若是商最後一位小於 5,則作捨棄操做,不然對最後一位
進行進位操做
BigDecimal.ROUND_HALF_EVEN 若是商的倒數第二位是奇數,則按照 ROUND_HALF_UP 處理;若是是偶數,則按
照 ROUND_HALF_DOWN 處理

 

 能夠把加減乘除封裝一個工具類(轉):

 

import java.math.BigDecimal; public class BigDecimalDemo {     static final int location = 10;     /**     * 定義加法方法,參數爲加數與被加數     * @param value1 相加的第一個數      * @param value2 相加的第二個數      * @return 兩數之和      */     public BigDecimal add(double value1 , double value2) { //實例化 Decimal 對象
        BigDecimal b1 = new BigDecimal(Double.toString(value1));         BigDecimal b2 = new BigDecimal(Double.toString(value2));         return b1.add(b2);        //調用加法方法
    }     /**      * 定義減法方法,參數爲減數與被減數      * @param value1 被減數      * @param value2 減數     * @return 運算結果     */     public BigDecimal sub(double value1 , double value2) { //實例化 Decimal 對象
        BigDecimal b1 = new BigDecimal(Double.toString(value1));         BigDecimal b2 = new BigDecimal(Double.toString(value2));         return b1.subtract(b2);        //調用減法方法
    }     /**      * 定義乘法方法,參數爲乘數與被乘數      * @param value1 第一個乘數      * @param value2 第二個乘數      * @return 運算結果      */     public BigDecimal mul(double value1 , double value2) {      //實例化 Decimal 對象
        BigDecimal b1 = new BigDecimal(Double.toString(value1));         BigDecimal b2 = new BigDecimal(Double.toString(value2));         return b1.multiply(b2);        //調用乘法方法
    }     /**      * 定義除法方法,參數爲除數與被除數      * @param value1 被除數      * @param value2 除數      * @return 運算結果      */     public BigDecimal div(double value1 , double value2) {         return div(value1, value2,location);//調用自定義除法方法
    }     public BigDecimal div(double value1 , double value2 ,int b) {         if (b<0) {     System.out.println("b 值必須大於等於 0");         }         BigDecimal b1 = new BigDecimal(Double.toString(value1));         BigDecimal b2 = new BigDecimal(Double.toString(value2));         //調用除法方法,商小數點保留 b 位,並將結果進行四捨五入操做
        return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);     }     public static void main(String[] args) {         BigDecimalDemo b = new BigDecimalDemo();         System.out.println("兩個數字相加結果:" + b.add(-7.5, 8.9));         System.out.println("兩個數字相減結果:" + b.sub(-7.5, 8.9));         System.out.println("兩個數字相乘結果:" + b.mul(-7.5, 8.9));         System.out.println("兩個數字相除結果,結果小數後保留 10 位:" + b.div(10,2));         System.out.println("兩個數字相除,保留小數後 5 位:" + b.div(-7.8,8.9,5));     } }

 

 

 

 (8) 數組打印

 

     int[] arr=new int[]{1,4,6,7,1,3}; System.out.println(arr); System.out.println(Arrays.toString(arr));

[I@4554617c
[1, 4, 6, 7, 1, 3]

 

 

二維數組也能夠不規則

 

(9) 

相關文章
相關標籤/搜索