十進位制整數文字
整數文字提供的值可以在需要 byte
,short
,int
,long
或 char
例項的地方使用。 (這個例子側重於簡單的十進位制形式。其他例子解釋了八進位制,十六進位制和二進位制的文字,以及使用下劃線來提高可讀性。)
普通的整數文字
最簡單和最常見的整數文字形式是十進位制整數文字。例如:
0 // The decimal number zero (type 'int')
1 // The decimal number one (type 'int')
42 // The decimal number forty two (type 'int')
你需要小心前導零。前導零使整數文字被解釋為八進位制而不是十進位制。
077 // This literal actually means 7 x 8 + 7 ... or 63 decimal!
整數文字是無符號的。如果你看到這樣 -10
或+10
,這些其實都是表示式使用一元 -
和一元+
運算子。
此形式的整數文字範圍具有固有型別 int
,並且必須落在 0 到 2 31 或 2,147,483,648 的範圍內。
請注意,2 31 是 1
大於 Integer.MAX_VALUE
。從 0 到 2147483647
的文字可以在任何地方使用,但是如果沒有前面的一元 -
運算子,使用 2147483648
是一個編譯錯誤。 (換句話說,它保留用於表示 Integer.MIN_VALUE
的值。)
int max = 2147483647; // OK
int min = -2147483648; // OK
int tooBig = 2147483648; // ERROR
長整數文字
long
型別的文字通過新增 L
字尾來表示。例如:
0L // The decimal number zero (type 'long')
1L // The decimal number one (type 'long')
2147483648L // The value of Integer.MAX_VALUE + 1
long big = 2147483648; // ERROR
long big2 = 2147483648L; // OK
請注意,int
和 long
文字之間的區別在其他地方很重要。例如
int i = 2147483647;
long l = i + 1; // Produces a negative value because the operation is
// performed using 32 bit arithmetic, and the
// addition overflows
long l2 = i + 1L; // Produces the (intuitively) correct value.