以前對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 個參數分別表示除數、商的小數點後的位數和近似值處理模式。
模式名稱 | 說明 |
---|---|
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)