我正在审查由目前不可用的人编写的代码,我遇到了这个:
double x = ...;
if(x == 01) {
// do something
}
我以前从未见过这种情况。它有什么特殊含义吗?
我正在审查由目前不可用的人编写的代码,我遇到了这个:
double x = ...;
if(x == 01) {
// do something
}
我以前从未见过这种情况。它有什么特殊含义吗?
01
(以 0 开头的数字)表示 Java 中的八进制(以 8 为基数)数字。
01
表示1
八进制(十进制也是 1,因此在这种情况下没有区别。有关八进制的更多信息,请参阅http://en.wikipedia.org/wiki/Octal。)
如果你问为什么要x
创建一个新变量,它可以稍后在代码中使用。
(我非常怀疑这一点)如果你问什么==
意思,它的意思是“等于”。=
正如您在第一行中看到的那样,只有 1是一项作业。
它在某种意义上具有特殊的含义,它是一种八进制数符号。否则它是无用的和混乱的。01 是 int 常量 1。它应该是
if(x == 1) {
// do something
}
javac没有区别。它将被编译成相同的字节码。此外,javac 会将您的表达式转换为
if(x == 1.0D) {
// do something
}
如果你反编译 .class 你会看到它。这种从“较小”类型到“较大”类型的自动转换称为类型提升。