使用操作符時常犯的錯誤
使用操作符時一個常犯的錯誤就是,即使對表達式如何計算有點不確定,也不願意使用括號。
這個問題在Java中仍然存在。
在C和C++中,一個特別常見的錯誤如下:
while(x= y){
//….
}
程序員很明顯是想測試是否“相等”(==),而不是進行賦值操作。
在C和C++中,如果y是一個非零值,name這種賦值的結果肯定是true,而這樣便會得到一個無窮循環。
在Java中,這個表達式的結果並不是布爾值,而編譯器期望的是一個布爾值。
由於Java不會自動將int數值轉換成布爾值,所以在編譯時會拋出一個編譯時錯誤,
從而組織我們進一步去運行程序。
所以這種錯誤在Java中永遠不會出現(唯一一個不會得到編譯時錯誤的情況是x和y都爲布爾值)。
在這種情況下,x=y屬於合法表達式。而在前面的例子中,則可能是一個錯誤。
Java中有一個與C和C++中類似的問題,即使用按位“與”和按位“或”代替邏輯“與”和邏輯“或”。
按位“與”和按位“或”使用單字符(&或|),而邏輯“與”和邏輯“或”使用雙字符(&&或||)。
就像“=”和“==”一樣,鍵入一個字符當然要比鍵入兩個簡單。
Java編譯器可防止這個錯誤放生,因爲它不允許我們隨便把一種類型當做另一種類型來用。