有一系列類需特別對待;可將它們想象成“基本”、“主要”或者“主”(Primitive)型別,進行程式設計時要頻繁用到它們。之所以要特別對待,是由於用new建立物件(特別是小的、簡單的變數)並不是非常有效,因為new將物件置於“堆”裡。對於這些型別,Java採納了與C和C++相同的方法。也就是說,不是用new建立變數,而是建立一個並非控制程式碼的“自動”變數。這個變數容納了具體的值,並置於堆疊中,能夠更高效地存取。Java決定了每種主要型別的大小。就象在大多數語言裡那樣,這些大小並不隨著機器結構的變化而變化。這種大小的不可更改正是Java 程式具有很強移植能力的原因之一。
型別 | bit位數 | 值範圍 | 預設值 |
boolean | 1 | true/false | false |
char | 16 | '\u0000~u\FFFF’ | '\u0000' |
byte | 8 | -128~127 | 0 |
short | 16 | -32768~32767 | 0 |
int | 32 | -2147483648~2147483647 | 0 |
long | 64 | -9233372036854477808~9233372036854477807 | 0L |
float | 32 | -3.40292347E+38~3.40292347E+38 | 0.0f |
double | 64 |
-1.79769313486231570E+308~1.79769313486231570E+308 |
0.0d |
Java1.1增加了兩個類,用於進行高精度的計算:BigInteger和BigDecimal。儘管它們大致可以劃分為“封裝器”型別,但兩者都沒有對應的“主型別”。這兩個類都有自己特殊的“方法”,對應於我們針對主型別執行的操作。也就是說,能對int 或float 做的事情,對BigInteger 和BigDecimal 一樣可以做。只是必須使用方法呼叫,不能使用運算子。此外,由於牽涉更多,所以運算速度會慢一些。我們犧牲了速度,但換來了精度。BigInteger 支援任意精度的整數。也就是說,我們可精確表示任意大小的整數值,同時在運算過程中不會丟失任何資訊。BigDecimal 支援任意精度的定點數字。例如,可用它進行精確的幣值計算。