Java 效率總結

1.避免建立沒必要要的對象
    靜態的初始化器,能夠避免重複建立對象。
    
2.內存泄露
    a.對象過時。
    b.緩存。
    c.監聽器和其它回調。
        監視工具:Heap剖析工具。
        
3.避免使用終結方法
    使用終結方法有一個很是嚴重的性能損失,因此纔會出現池化技術,好比數據庫池,線程池。
    顯示終止方法:InputStream等文件流,try-finally結構。
4.儘可能使用equals代替「==」
    由於使用「==」 會檢查參數是否爲這個對象的引用。
    
    補充:使用instanceof操做符檢查參數是否爲正確的類型。
    檢查是否爲空:
  java

 (file == null ? o.filed == null : filed.equals(o.filed))


5.確保惟一
    覆蓋equals時總要覆蓋hashCodespring

6.使可變性最小數據庫

    靜態工廠也使得客戶端間能夠共享現有的實例,而不用建立新的實例。注意:static、final等關鍵詞
    
7.複合優於繼承緩存

    構造器不能調用可被覆蓋的方法,不管是直接調用,仍是間接調用。ide

public class Supper{
        public Supper(){
        }
        public void ovverideMe(){
        }
    }
    
    
    public final class Sub extends Supper{
        private final Date date;
        Sub(){
            date = new Date();
        }
        public void ovverideMe(){
            System.out.println(date);
        }
        public static void main(String[] args){
            Sub sub = new Sub();
            sub.ovverideMe();
        }
    }

    你可能會期待這個程序會打印日期兩次,可是它第一次打印的是null,由於ovverideMe方法被Supper構造器調用的時候,構造器Sub尚未機會初始化date域。
    
8.枚舉類型
工具

    爲了將數據與枚舉類型常量關聯起來,得聲明實例域,並編寫一個帶有數據並將數據保存在域中的構造器。
    
    注意:枚舉類型使用時一類的,而且數據量還不少,其它的可使用常量。
    好比:App中的錯誤碼,不可能把每一個錯誤定義一個常量。尚未在springMVC中渲染的頁面,也可使用枚舉類型進行管理。

    
9.方法性能

    a.檢查參數的有效性。
    b.慎用可變參數。
    
10.通用程序設計ui

    a.若是須要精確的答案,請避免使用float 和 double。
    貨幣單位,最明顯的作法是以分單位計算,使用int和long。
    
    b.基本類型因爲裝箱基本類型。
    基本類型:int,long;裝箱基本類型:Integer,Long.
    之間的區別:1.基本類型只有值,而裝箱基本類型則具備與他們的值不一樣的同一性。2.基本類型只有功能完備的值,而每一個裝箱基本類型除了
    它對應基本類型的全部值以外,還有非功能值:null。3.基本類型比裝箱基本類型更節省時間和空間。
    
    總結:1.裝箱基本類型是類,類是能夠爲null,這是主要的區別。因此若是使用「==」判斷,在Integer是有問題的。

        2.當在一項操做操做中混合使用基本類型和裝箱基本類型時,裝箱基本類型就會自動拆箱。
    
    c.小心字符串鏈接的功能。就是「+」
    可使用StringBuild代替String的「+」,或者使用StringBuffer。
    
    
11.異常spa

    a.優先使用經常使用異常。
    
    線程

相關文章
相關標籤/搜索