1. 程式人生 > >java中的陷阱 你注意了麼?

java中的陷阱 你注意了麼?

看了一段北風網的視訊,總結幾個經典的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)介紹了。