3 回答

TA貢獻1883條經驗 獲得超3個贊
這可能是從C學習的習慣,以避免這種拼寫錯誤(單一=
而不是雙重==
):
if (object = null) {
將常量放在左側的約定==
在Java中并不真正有用,因為Java要求表達式if
求值為一個boolean
值,所以除非常量是a boolean
,否則你會得到一個編譯錯誤。參數。(如果它是一個布爾值,你不應該使用==
...)

TA貢獻1891條經驗 獲得超3個贊
正如其他人所說,這是從C中學到的習慣,以避免拼寫錯誤 - 盡管即使在C中我也希望有足夠警告級別的優(yōu)秀編譯器發(fā)出警告。正如Chandru所說,以這種方式與Java中的null進行比較只會導致問題,如果您使用的是類型變量Boolean
(您不在示例代碼中)。我會說這是一種非常罕見的情況,而且不值得改變你在其他地方編寫代碼的方式。(即使在這種情況下,我也不會費心扭轉操作數;如果我想清楚地考慮反轉它們,我相信我可以算出等號。)
什么也沒有被提及的是,很多人(當然我自己在內)發(fā)現的if (variable == constant)
形式可讀性更強-這是表達自己的更自然的方式。這是不要盲目地從C復制約定的原因。在假設在一個環(huán)境中可能有用的東西在另一個環(huán)境中有用之前,你應該總是質疑實踐(就像你在這里做的那樣:)。

TA貢獻1780條經驗 獲得超1個贊
除了對象的類型之外,這在Java(1.5+)中沒有多大價值Boolean
。在這種情況下,這仍然可以很方便。
if (object = null)
如果是對象,則不會導致Java 1.5+中的編譯失敗,Boolean
但會NullPointerException
在運行時拋出。
添加回答
舉報