<b>3.3.1 整型</b>
整型用于表示沒有小數部分的數值,它允許是負數。java提供了4種整型,具體内容如表3-1所示。
表3-1 java整型
類型 存儲需求 取值範圍
int 4位元組 -2 147 483 648~2 147 483 647(正好超過20億)
short 2位元組 -32 768~32 767
long 8位元組 -9 223 372 036 854 775 808~9 223 372 036 854 775 807
byte 1位元組 -128~127
在通常情況下,int類型最常用。但如果表示星球上的居住人數,就需要使用long類型了。byte和short類型主要用于特定的應用場合,例如,底層的檔案處理或者需要控制占用存儲空間量的大數組。
在java中,整型的範圍與運作java代碼的機器無關。這就解決了軟體從一個平台移植到另一個平台,或者在同一個平台中的不同作業系統之間進行移植給程式員帶來的諸多問題。與此相反,c和c++程式需要針對不同的處理器選擇最為高效的整型,這樣就有可能造成一個在32位處理器上運作很好的c程式在16位系統上運作卻發生整數溢出。由于java程式必須保證在所有機器上都能夠得到相同的運作結果,是以各種資料類型的取值範圍必須固定。
長整型數值有一個字尾l或l(如4000000000l)。十六進制數值有一個字首0x或0x(如0xcafe)。八進制有一個字首0,例如,010對應八進制中的8。很顯然,八進制表示法比較容易混淆,是以建議最好不要使用八進制常數。
從java 7開始,加上字首0b或0b就可以寫二進制數。例如,0b1001就是9。另外,同樣是從java 7開始,還可以為數字字面量加下劃線,如用1_000_000(或0b1111_0100_0010_0100_0000)表示一百萬。這些下劃線隻是為了讓人更易讀。java編譯器會去除這些下劃線。
c++注釋:在c和c++中,int和long等類型的大小與目标平台相關。在8086這樣的16位處理器上整型數值占2位元組;不過,在32位處理器(比如pentium或sparc)上,整型數值則為4位元組。類似地,在32位處理器上long值為4位元組,在64位處理器上則為8位元組。由于存在這些差别,這對編寫跨平台程式帶來了很大難度。在java中,所有的數值類型所占據的位元組數量與平台無關。
注意,java沒有任何無符号(unsigned)形式的int、long、short或byte類型。