为什么 08 在 Java 中不是有效的整数文本?
为什么被认为是超出范围的int,但及以下则不是?08
07
在 Java 和其他几种语言中,以 开头的整数文字被解释为八进制(以 8 为基数)的数量。0
对于不允许的个位数(和 除外),结果是相同的,因此您可能不会注意到它们被解释为八进制。但是,如果您用多个有效数字编写数字,则可能会对结果感到困惑。08
09
例如:
010 == 8
024 == 20
由于八进制文字通常不是您想要的,因此您应该始终注意永远不要以 开始整数文字,除非您实际上实际上试图自己写零。0
任何以 0 为前缀的数字都被视为八进制数。八进制数只能使用数字 0-7,就像十进制可以使用 0-9,二进制可以使用 0-1 一样。
// octal to decimal
01 // 1
02 // 2
07 // 7
010 // 8
020 // 16
// octal to binary (excluding most significant bit)
01 // 1
02 // 10
07 // 111
010 // 1000
020 // 10000
有10种类型的人,那些理解三元的人,那些不理解的人,以及那些认为这是一个愚蠢的笑话的人。