对于小的编译时间常数,“整数太大”

我有这个:

switch (account){ case 08120: // Savings deposit interest rate return null; case 13100: // Receivables contractual interest return null; case 16550: // Default management process accounts payable return null; } 

但编译器抱怨整数08120太大了!

到底是怎么回事?

首先要做的事情是:您不可能偶然发现Java错误。 首先责怪你的代码。

08120是Java中的八进制文字 ,因为它以前导零开头。

8不是有效的八进制数字(只有0到7)。

因此,您会收到编译错误,尽管有点误导。

这不是一个java bug。

您不能将0XXXXX的格式用于十进制数字。 十进制数应以非零数字开头。

使用8120而不是08120

0开头的数字被解释为八进制数,因为有效的八进制数字可以是0到7,因此8不适合。这不是错误,尝试在没有0情况下启动数字。

这是一个有点误导/含糊的错误信息。 在你的代码中:

 case 08120: // Savings deposit interest rate return null; 

您使用过08120 ,它被解释为八进制文字而不是十进制 文字 。 由于您的下一个数字是8 (不在0 - 7之间),因此它是无效/超出范围的八进制文字,因此编译器错误。