45.將局部變量的作用域最小化
每一個局部變量幾乎都需要一個初始化表達式
for 循環優先於 while 循環
46. for each 循環優先於傳統的 for 循環
47.瞭解和使用類庫
java.util java.lang java.io
48.如果需要精確計算,不要使用 float 與 double
float 與 double 尤其不適合於貨幣計算
如果數值範圍不超過9位使用 int 不超過18位使用 long 否則使用 Bigdecimal
49.基本類型優先於封裝類型
自動封裝減少了使用封裝類型的繁瑣操作,但並沒有減少它的風險,封裝類型需要注意 null 異常
50.如果其他類型更加適合,避免使用字符串
字符串不適合代替其他類型
字符串不適合代替枚舉類型
字符串不適合代替聚集類型
字符串不適合代替能力表
51.當心字符串連接的性能
爲連接 n 個字符串而重複使用字符串連接操作符,需要n 的平方級的時間,這是由於字符串不可變,當兩個字符串放在一起時,它們的內容都需要拷貝,請使用 StringBuilder 來代替 String
52.通過接口引用對象
使用接口作爲類型的習慣,程序會更加靈活
如果沒有合適的接口,完全可以用類而不是接口來引用對象
53.接口優先於反射機制
java.lang.reflect 提供了通過程序來訪問關於已轉載類的信息的能力
但使用反射 喪失了編譯時類型檢查的好處 執行反射的代碼非常笨拙 損失性能
通常普通方法在運行時不應該以反射方式訪問對象
如果以有限形式使用反射機制,雖然夜壺付出代價,但是可以獲取許多好處
54.謹慎的使用本地方法
使用本地方法來提高性能的方法不值得提倡
55.謹慎的進行優化
要努力編寫好的程序而不是快的程序
好的程序體現了信息隱藏的原則
努力避免那些限制性能的設計決策
要考慮api 設計決策的性能後果
爲獲取好的性能對api 進行包裝,這是一種非常不好的想法,api 性能可能在下個版本中就不存在,但被包裝的 api以及由它引起的問題會一直困擾着你
56.遵守普遍接受的命名慣例