0

我正在审查由目前不可用的人编写的代码,我遇到了这个:

double x = ...;
if(x == 01) {
    // do something
}

我以前从未见过这种情况。它有什么特殊含义吗?

4

3 回答 3

4

01(以 0 开头的数字)表示 Java 中的八进制(以 8 为基数)数字。

于 2012-12-04T00:14:45.730 回答
4
  1. 01表示1八进制(十进制也是 1,因此在这种情况下没有区别。有关八进制的更多信息,请参阅http://en.wikipedia.org/wiki/Octal。)

  2. 如果你问为什么要x创建一个新变量,它可以稍后在代码中使用。

  3. (我非常怀疑这一点)如果你问什么==意思,它的意思是“等于”。=正如您在第一行中看到的那样,只有 1是一项作业。

于 2012-12-04T00:22:01.490 回答
0

它在某种意义上具有特殊的含义,它是一种八进制数符号。否则它是无用的和混乱的。01 是 int 常量 1。它应该是

if(x == 1) {
    // do something
}

javac没有区别。它将被编译成相同的字节码。此外,javac 会将您的表达式转换为

if(x == 1.0D) {
    // do something
}

如果你反编译 .class 你会看到它。这种从“较小”​​类型到“较大”类型的自动转换称为类型提升。

于 2012-12-04T00:24:14.990 回答