讀古今文學網 > 編寫高質量代碼:改善Java程序的151個建議 > 第2章 基本類型 >

第2章 基本類型

不積跬步,無以至千里;

不積小流,無以成江海。

——荀子《勸學篇》

Java中的基本數據類型(Primitive Data Types)有8個:byte、char、short、int、long、float、double、boolean,它們是Java最基本的單元,我們的每一段程序中都有它們的身影,但我們對如此熟悉的「夥伴」又瞭解多少呢?

積少成多,積土成山,本章我們就來一探這最基本的8個數據類型。

建議21:用偶判斷,不用奇判斷

判斷一個數是奇數還是偶數是小學裡學的基本知識,能夠被2整除的整數是偶數,不能被2整除的是奇數,這規則簡單又明瞭,還有什麼好考慮的?好,我們來看一個例子,代碼如下:


public class Client{

public static void main(Stringargs){

//接收鍵盤輸入參數

Scanner input=new Scanner(System.in);

System.out.print("請輸入多個數字判斷奇偶:");

while(input.hasNextInt()){

int i=input.nextInt();

String str=i+"->"+(i%2==1?"奇數":"偶數");

System.out.println(str);

}

}

}


輸入多個數字,然後判斷每個數字的奇偶性,不能被2整除就是奇數,其他的都是偶數,完全是根據奇偶數的定義編寫的程序,我們來看看打印的結果:


請輸入多個數字判斷奇偶:1 2 0-1-2

1->奇數

2->偶數

0->偶數

-1->偶數

-2->偶數


前三個還很靠譜,第四個參數-1怎麼可能會是偶數呢,這Java也太差勁了,如此簡單的計算也會錯!別忙著下結論,我們先來瞭解一下Java中的取余(%標示符)算法,模擬代碼如下:


//模擬取余計算,pidend被除數,pisor除數

public static int remainder(int pidend, int pisor){

return pidend-pidend/pisor*pisor;

}


看到這段程序,相信大家都會心地笑了,原來Java是這麼處理取余計算的呀。根據上面的模擬取余可知,當輸入-1的時候,運算結果是-1,當然不等於1了,所以它就被判定為偶數了,也就是說是我們的判斷失誤了。問題明白了,修正也很簡單,改為判斷是否是偶數即可,代碼如下:


i%2==0?"偶數":"奇數"


注意 對於基礎知識,我們應該「知其然,並知其所以然」。