JAVA編碼注意事項

來源:互聯網
上載者:User

1、比較兩個浮點型是否相等,包括float及double,不要採用等號"=="進行比較,因為浮點計算可能涉及到舍入計算。如果是需要值比較準確的比較,如貨幣金額等,可以考慮使用固定精度的類型,如BigDecimal的。對於不需要精確的值,考慮比較平等一些範圍內,例如:如果(Math.abs(x - y的)<.0000001)。如:

if(x==y){}

可以修改為

if(Math.abs(x - y)<.0000001){}

2、多線程並發應用中日期的格式化,要注意SimpleDateFormat不是安全執行緒的。

SimpleDateFormat為了保證效率,內部採用了類成員變數來記錄值,所以不是安全執行緒的,我們的應用程式中盡量不要將SimpleDateFormat作為類成員變數,否則會存線上程安全的問題,解決的方法有如下幾種:

1)、將SimpleDateFormat作為方法變數,直接定義在方法內部,雖然存在著記憶體回收的問題,但是解決了安全執行緒的問題;

2)、使用Apache的commons-lang中的FastDateFormat,這是一個安全執行緒的,不過它只提供了format日期的方法,卻沒有提供將字串轉換為日期的方法,這是一個不足;

3)、如果你確實對SimpleDateFormat情有獨鐘,那麼可以使用ThreadLocal來封裝當前它,也可以保證是安全執行緒的,如:

ThreadLocal<SimpleDateFormat> df = new ThreadLocal<SimpleDateFormat>() {public SimpleDateFormat get() {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf;}};public Date dateFormat(String dateString) throws ParseException{return df.get().parse(dateString);}

3、Cache中盡量不要嘗試通過Throwable去捕獲所有的異常

從它的JavaDoc可以看到,Throwable是JAVA虛擬機器可以拋出的所有類的超類,其中包括了Error及Exception等,Error是不可以恢複錯誤,Exception是可以的。

4、字串的拼接,盡量不要採用符合“+”

在小型的應用,特別是用戶端應用中,這是個沒有多大的區別的,但如果你有大型互連網應用開發的經驗,在高並發的壓力下,過多的使用“+”拼接字串,可能會對你的應用產生不小的影響,甚至最嚴重的情況下是讓伺服器響應不過來。所以有字串拼接的情況了,最好是使用StringBuffer,在單線程的情況下,可以使用StringBuilder擷取得更好的效能。這篇部落格,是一位博主做的字串拼接的效能表現:http://blog.csdn.net/yirentianran/article/details/2871417,可以看一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.