(1) 奇偶數判斷:number&1 == 0 來判斷,不要用:number%2 == 0,當number爲負的奇數時候,會失效。
System.out.println((-1) % 2); 這個結果是-1,而不是1。當用number%2 == 1判斷時,容易忽略。
(2)浮點數精確計算,應該使用BigDecimal類來操作:
System.out.println(2.00-1.10); 這個結果是0.8999999,而不是0.9。
System.out.println(new BigDecimal(String.valueOf(2.00)).subtract((new BigDecimal(String.valueOf(1.10)))));結果是0.9;注意在構造對象時,用String作爲參數。
(3)窄數字類型擴展
規則:如果擴展之前的數值類型爲有符號類型(int,byte,short等),執行符號擴展;如果爲無符號類型(char),直接擴展0;
例子1:(int)(char)(byte)-1 = 65535;
(byte)-1 = 1111,1111
(char)(byte)-1 = 1111,1111,1111,1111
(int)(char)(byte)-1 = 0000,0000,0000,0000,1111,1111,1111,1111
例子2:(byte)0x90 == 0x90 ? 答案:不對
(byte)0x90 = 1001,0000
(int)(byte)0x90 = 1111,1111,1111,1111,1111,1111,1001,0000 = -112
(4) 三元表達式:數1 ?數2:數3
規則:
1.如果數2和數3具有相同類型,就是普通條件表達式
2.如果後面選擇的兩個數,一個操作數爲T類型,T爲byte,short或char,而另一個操作數是一個int的字面常量,並且它的值可以用T表示,那條件表達式就是T類型。
3.否則,將會將不同的類型進行類型提升(擴展)。
例子:
char x = 'X';
int i=0;
System.out.println(true?x:0);//X
System.out.println(false?i:x);//88