2011-07-27 89 views
3

在java中有更快的方法來做到這一點嗎?if語句中的多重檢查

if (keyCode != 66 && keyCode != 8 && keyCode != 21 && keyCode != 22) { 

} 

keyCode是一個int。

回答

11

更快?對你來說太慢了嗎?不要玩優化器。編寫可讀代碼並將優化器留給優化器。 過早的優化是所有罪惡

編輯喬希的評論後根:

如果你真的有很多人,把它們放在一個容器(如集或陣列)和findkeyCode在裏面。如果你找到了它,那麼你的情況是錯誤的。否則它是真的。

按照戴夫的評論:

if(!MyCodesSet.Contains(keyCode)){ 
} 
+3

通過可讀代碼,他意味着給出那些常量值的名稱,即對66,8,21和22有什麼重要的意義? – DaveJohnston

+0

如果我需要再添加15個,該怎麼辦?可以以某種方式使用數組嗎? – Josh

+0

請添加:「我們應該忘記小效率,比如97%的時間:過早...」;) – Jacob

0

是的,switch聲明將轉化爲直接跳轉。然而,無論如何,JIT可能會將其用於代碼,所以如果switch實際上更快,您必須嘗試一下。