JAVA代碼的優化分爲兩個方面:數據庫
1、減少代碼的體積。2、提升代碼的執行效率。函數
======================================================================================oop
1、減少代碼的體積優化
1.若是要改動代碼儘可能集中在一處修改,例如要修改某些屬性的值,能夠寫一個統一化的方法對屬性進行修改。spa
2.若是有一個功能超過兩次被使用,能夠考慮把它封裝一個靜態的方法寫在公共的Utils中。code
3.若是有超過兩個子類在某個函數中作了類似但又不一樣的操做,能夠考慮將這個函數在父類中抽象化。對象
2、提升代碼的執行效率blog
1.時間複雜度儘可能要小(越少的loop嵌套,代碼的執行效率越高)。寫代碼時能夠多采用過濾的方式提取出目標數據,儘可能不使用循環的方式提取。內存
2.寫代碼切勿相互依賴,儘可能作到解耦(例如A Service中調用了B Service中的方法,同理B也調用了A,這樣是不能夠的)。字符串
3.減小動態運算的語句,寧肯浪費一點內存去處理數據,也不可以讓它動態運算浪費CPU。
4.減小對象的建立,因爲JVM建立對象的時候會花費時間生成,當對象失效的時候JVM還會對其進行垃圾回收,例如對字符串的拼接儘可能使用StringBuffer、if判斷中對象的使用能夠在判斷中建立。以下代碼:
//低效率的寫法 List list = new ArrayList<>(); int[] arr = new int[]{0,1,5,8,15}; for(int i = 0; i <= arr.length; ++i;){ String name = new String("Jack"); if(arr[i]==i){ list.add(name); } } //高效率的寫法 List list = new ArrayList<>(); int[] arr = new int[]{0,1,5,8,15}; for(int i = 0, len = arr.length; i <= len; ++i;){ if(arr[i]==i){ String name = new String("Jack"); list.add(name); } }
5.若是成員變量和局部變量都能保證功能的實現,儘可能使用局部變量。由於局部變量存儲在棧中速度較快,成員變量存儲在堆中速度較慢。
6.初始化變量時儘可能不要寫在循環中,以下代碼:
//低效率的寫法 for(int i = 0; i <= n; ++i){ String name = "Jack"; System.out.println(name); } //高效率的寫法 String name = "Jack"; for(int i = 0; i <= n; ++i){ System.out.println(name); }
7.數據庫的鏈接和I/O流的操做,在完成使用後應當及時的進行關閉。
8.try catch不要寫在循環的嵌套中,儘可能寫在循環的最外層,異常的使用要謹慎。