2

数字の前にゼロを追加すると、期待値 (400300) が出力されない理由がわかりません。

System.out.println(new Integer(0400300)); // prints 131264
System.out.println(0400300); // prints 131264

数値の前にゼロを 1 つ以上置くと、期待値が出力されません。

// JUnit test does not pass:
assertTrue(0400300 == 400300);  // returns false!?
4

1 に答える 1

10

前に追加0すると、番号が になりましたOctal literal。そう:

0400300 = 3 * 8 ^ 2 + 4 * 8 ^ 5 = 131264

関連するセクションについては、JLS を参照してください。見積もり:

8 進数は、ASCII 数字 0 の後にアンダースコアが散在する 1 つまたは複数の ASCII 数字 0 から 7 で構成され、正、ゼロ、または負の整数を表すことができます。

于 2013-05-17T14:12:58.323 に答える