現在利用できない人が書いたコードをレビューしていて、これに出くわしました:
double x = ...;
if(x == 01) {
// do something
}
これは今まで見たことがありません。特別な意味はありますか?
現在利用できない人が書いたコードをレビューしていて、これに出くわしました:
double x = ...;
if(x == 01) {
// do something
}
これは今まで見たことがありません。特別な意味はありますか?
01
(0 で始まる数値) は、Java の8進数(基数 8) を表します。
01
は 8 進数を意味1
します (10 進数でも 1 であるため、この場合は違いはありません。8 進数の詳細については、http://en.wikipedia.org/wiki/Octalを参照してください)。
新しい変数が作成された理由を尋ねている場合はx
、後でコードで使用できます。
(私はこれを非常に疑っています)あなたが何==
を意味するのかと尋ねるなら、それは「等しい」を意味します。=
最初の行でわかるように、1 つだけが代入です。
8進数表記という意味で特別な意味があります。そうでなければ、それは役に立たず、混乱を招きます。01 は int 定数 1 です。
if(x == 1) {
// do something
}
javac に違いはありません。同じバイトコードにコンパイルされます。さらに、javac は式を次のように変換します。
if(x == 1.0D) {
// do something
}
.class を逆コンパイルすると、それが表示されます。この「小さい」型から「大きい」型への自動変換は、型昇格と呼ばれます。