十进制整数文字
整数文字提供的值可以在需要 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.