0

現在利用できない人が書いたコードをレビューしていて、これに出くわしました:

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

これは今まで見たことがありません。特別な意味はありますか?

4

3 に答える 3

4

01(0 で始まる数値) は、Java の8進数(基数 8) を表します。

于 2012-12-04T00:14:45.730 に答える
4
  1. 01は 8 進数を意味1します (10 進数でも 1 であるため、この場合は違いはありません。8 進数の詳細については、http://en.wikipedia.org/wiki/Octalを参照してください)。

  2. 新しい変数が作成された理由を尋ねている場合はx、後でコードで使用できます。

  3. (私はこれを非常に疑っています)あなたが何==を意味するのかと尋ねるなら、それは「等しい」を意味します。=最初の行でわかるように、1 つだけが代入です。

于 2012-12-04T00:22:01.490 に答える
0

8進数表記という意味で特別な意味があります。そうでなければ、それは役に立たず、混乱を招きます。01 は int 定数 1 です。

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

javac に違いはありません。同じバイトコードにコンパイルされます。さらに、javac は式を次のように変換します。

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

.class を逆コンパイルすると、それが表示されます。この「小さい」型から「大きい」型への自動変換は、型昇格と呼ばれます。

于 2012-12-04T00:24:14.990 に答える