十進位制整數文字

整數文字提供的值可以在需要 byteshortintlongchar 例項的地方使用。 (這個例子側重於簡單的十進位制形式。其他例子解釋了八進位制,十六進位制和二進位制的文字,以及使用下劃線來提高可讀性。)

普通的整數文字

最簡單和最常見的整數文字形式是十進位制整數文字。例如:

 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 311 大於 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

請注意,intlong 文字之間的區別在其他地方很重要。例如

 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.

參考: JLS 3.10.1 - 整數文字