对于小的编译时间常数,“整数太大”
我有这个:
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
之间),因此它是无效/超出范围的八进制文字,因此编译器错误。