Java編程常見"坑"匯總(上)__演算法

來源:互聯網
上載者:User
                                    Java編程常見"坑"匯總(上)

每天在寫Java程式,其實裡面有一些細節大家可能沒怎麼注意,這不,有人總結了一個我們編程中常見的問題。雖然一般沒有什麼大問題,但是最好別這樣做。另外這裡提到的很多問題其實可以通過Findbugs( http://findbugs.sourceforge.net/ )來幫我們進行檢查出來。

注意:Java編程常見坑匯總將分為上下兩期來給大家推送。。。 1.字串串連誤用

錯誤的寫法:

String s = "";  
for (Person p : persons) {  
   s += ", " + p.getName();  
}  
s = s.substring(2); //remove first comma

正確的寫法:

StringBuilder sb = new StringBuilder(persons.size() * 16); // well estimated buffer
for (Person p : persons) {
   if (sb.length() > 0) sb.append(", ");
   sb.append(p.getName);
}

2.錯誤的使用StringBuffer

錯誤的寫法:

StringBuffer sb = new StringBuffer();  
sb.append("Name: ");  
sb.append(name + '\n');  
sb.append("!");  
...  
String s = sb.toString();

問題在第三行,append char比String效能要好,另外就是初始化StringBuffer沒有指定size,導致中間append時可能重新調整內部數組大小。如果是JDK1.5最好用StringBuilder取代StringBuffer,除非有安全執行緒的要求。還有一種方式就是可以直接連接字串。缺點就是無法初始化時指定長度。

正確的寫法:

StringBuilder sb = new StringBuilder(100);  
sb.append("Name: ");  
sb.append(name);  
sb.append("\n!");  
String s = sb.toString();


或者這樣寫:

String s = "Name: " + name + "\n!";


3.測試字串相等性

錯誤的寫法:

if (name.compareTo("John") == 0) ...  
if (name == "John") ...  
if (name.equals("John")) ...  
if ("".equals(name)) ...


上面的代碼沒有錯,但是不夠好。compareTo不夠簡潔,==原義是比較兩個對象是否一樣。另外比較字元是否為空白,最好判斷它的長度。

正確的寫法:

if ("John".equals(name)) ...  
if (name.length() == 0) ...  
if (name.isEmpty()) ...

4.數字轉換成字串

錯誤的寫法:

"" + set.size()  
new Integer(set.size()).toString()


正確的寫法:

String.valueOf(set.size())

5.利用不可變對象(Immutable)

錯誤的寫法:

zero = new Integer(0);  
return Boolean.valueOf("true");


正確的寫法:

zero = Integer.valueOf(0);  
return Boolean.TRUE;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.