D. Albarracín Asked: 2020-03-12 10:15:00 +0800 CST 2020-03-12 10:15:00 +0800 CST 2020-03-12 10:15:00 +0800 CST 带有小整数(2 位)的“int 类型的文字超出范围” 772 我创建了一个int类型的变量,并给它一个值,例如,“06”或前面带有“0”的其他值,这应该显示一个错误,因为如果它是一个整数,它不能有零向左,但一切正常。另一方面,如果我们给它赋值:“08”或“09”,你会得到一个错误,表明它超出了范围。 错误应该用从“01”到“09”的整个序列来标记,为什么只有“08”和“09”? public static void main( String[] args ) { int test = 08; } int 类型的文字 08 超出范围 java 2 Answers Voted Best Answer Trauma 2020-03-12T10:18:04+08:002020-03-12T10:18:04+08:00 08,与您的想法相反,是八进制格式的文字数字。Java 将所有以 . 开头的数字解释为该格式的数字0。 在这种格式中,各个数字从0到7。 因此错误:08 不是有效的八进制数,与 相同09。如果它们是正确的,例如05' o03`。 gbianchi 2020-03-12T10:23:08+08:002020-03-12T10:23:08+08:00 谷歌搜索这个:literal int javaleading zeros(因为这个问题对我来说听起来很有趣),我找到了这个英文答案。 它阐明了如果您输入前导 0,则该值将被视为八进制。八进制是从 0 到 7 的数字。 因此,您的 6 是八进制 6,而不是基数为 10 的 6。 Jon 在稍后的回复中为我们提供了指向java 文档的链接。 在那里他进一步澄清了答案,说单个0,或者从1到9的数字被视为十进制,任何以0开头的数字都被视为八进制。 出于好奇,它澄清了 00 是八进制的 0,就好像它与十进制的 0 非常不同。
08
,与您的想法相反,是八进制格式的文字数字。Java 将所有以 . 开头的数字解释为该格式的数字0
。在这种格式中,各个数字从
0
到7
。因此错误:
08
不是有效的八进制数,与 相同09
。如果它们是正确的,例如05' o
03`。谷歌搜索这个:literal int javaleading zeros(因为这个问题对我来说听起来很有趣),我找到了这个英文答案。
它阐明了如果您输入前导 0,则该值将被视为八进制。八进制是从 0 到 7 的数字。
因此,您的 6 是八进制 6,而不是基数为 10 的 6。
Jon 在稍后的回复中为我们提供了指向java 文档的链接。
在那里他进一步澄清了答案,说单个0,或者从1到9的数字被视为十进制,任何以0开头的数字都被视为八进制。
出于好奇,它澄清了 00 是八进制的 0,就好像它与十进制的 0 非常不同。