有人能告诉我这到底是怎么回事呢?当我用前导零初始化一个int时,程序不会忽略这些零,而是执行一些我不知道的操作。
int num = 0200;
System.out.println(num); // 128
System.out.println(033); // 27
有人能告诉我这到底是怎么回事呢?当我用前导零初始化一个int时,程序不会忽略这些零,而是执行一些我不知道的操作。
int num = 0200;
System.out.println(num); // 128
System.out.println(033); // 27
不确定的十进制值 - 它把它当作一个八进制文字,按Java语言规范,section 3.10.1:
一个八进制数字由一个ASCII数字0和一个或多个ASCII数字0到7组成,并且可以表示一个正整数,零整数或负整数。
OctalNumeral: 0 OctalDigits OctalDigits: OctalDigit OctalDigit OctalDigits OctalDigit: one of 0 1 2 3 4 5 6 7
请注意,八进制数字总是由两个或多个数字组成; 0总是被认为是一个十进制数字 - 实际上并不重要,因为数字0,00和0x0都表示完全相同的整数值。
这是一个八进制数字(基数为8)。
同样,0x27
是一个十六进制(基数16)文字,用39
@aaaa bbbb:您是否点击'close'链接并*实际*投票结束?你只是说你认为你应该投票结束? –
我不是注册用户,所以我没有真正关闭。 –