2012-12-04 100 views
0

我檢討有人寫的代碼誰是當前不可用,我碰到這個傳來:「x == 01」是什麼意思?

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

我從來沒有見過這個。它有特殊的意義嗎?

+5

你是專指'=='還是'01'? –

+1

或者,在提供賦值的情況下,可能是double和int之間的等價關係? – femtoRgon

+0

這不應該被關閉(除非它是重複的)。這是一個有效的問題。 – brimborium

回答

4

01(以0開頭的數字)表示Java中的八進制(基數8)數字。

4
  1. 01意味着八進制1(這也是在小數1,所以在這種情況下沒有什麼區別。欲瞭解更多八進制信息,請參閱http://en.wikipedia.org/wiki/Octal

  2. 如果你問爲什麼新變量x已創建,可以稍後在代碼中使用。

  3. (我非常懷疑這個)如果你問什麼==的含義,它的意思是「等於」。正如你在第一行看到的那樣,只有1 =是一項任務。

0

它在某種意義上具有特殊意義,它是八進制數字符號。否則它是無用的和混亂。 01是int常量1.它應該是

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

對於javac沒有區別。它將被編譯成相同的字節碼。此外,javac會將您的表達式轉換爲

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

如果您反編譯.class,您會看到它。這種從「較小」​​到「較大」類型的自動轉換被稱爲類型提升。