java中的陷阱 你注意了麼?
阿新 • • 發佈:2019-02-13
看了一段北風網的視訊,總結幾個經典的java陷阱給大家。
答案隱藏了,Ctrl+A顯示。建議先思考一下結果,然後執行程式碼試驗。也許你會恍然大悟。
1、找奇數:
上面的方法真的能找到所有的奇數麼?
A:沒有考慮到負數問題,如果傳參是負數,那麼永遠不能得到結果!應該是:return i % 2 != 0;
2、浮點數想減
上面會列印0.1麼?
A:不會,自己試驗就知道結果了。正確做法:用decimal。
3、交換
x、y的值呼喚了麼?
A:沒有,java運算順序是從左到右的,應該這麼寫:y=(x^= (y^= x))^ y;
4、字元和字串
上面兩個語句輸出結果相同麼?
A:不想同,字元會被轉換成在數字。所以第一句輸出:Ha,第二句輸出兩個字元的assii碼相加的數字。
5、無限迴圈
上面程式執行的結果是什麼?
A:無限迴圈。將i<=END改成i<END?為什麼呢?你知道的,呵呵!
6、計數器問題
結果跟你想的一樣麼?
A:呵呵,括號問題,不多說!
7、到底返回什麼?
true?false?
A:一般情況下,不管怎麼說try/catch程式碼塊中,finally總是最後被執行的 。
8、錯誤裡聚集遍歷
執行程式碼看看結果跟你想的一樣麼?
A:一般不建議在遍歷聚集的時候對聚集進行操作。為什麼結果是這樣呢?看JDK原始碼能得到答案。Enumeration沒有實現Fail Fast操作,如果換成ArrayList,上面的程式碼可能會出錯。《java與模式》迭代子(iterator)介紹了。