Java學習之程式碼最佳化
Java學習之程式碼最佳化,程式碼最佳化,程式設計師必須懂得一門學問,簡潔漂亮的程式碼給人的感覺就像如沐清風,一堆垃圾的程式碼給人的感覺就像吃了翔一樣的難受。所以不管是程式設計師還是準程式設計師,養成良好的程式碼最佳化習慣都是必須要養成的。Java以專業性和強大的規範性獨受企業青睞!別讓別人看見你的程式碼第一時間想到的是刪了從寫而不是程式碼最佳化。
首先,我們要搞清楚最佳化程式碼的目的。
減小程式碼的體積;提高程式碼執行的效率;程式碼最佳化具體細節(只說Java的,小編就是Java程式設計師)。
1.儘量指定類、方法的final修飾符。
Java編譯器會尋找機會內聯所有的final方法,內聯對於提升Java執行效率作用重大,具體參見Java執行期最佳化。此舉大概能2.夠使效能平均提高50%。
3.儘量重用物件特別是String物件的使用,出現字串連線時應該使用StringBuilder/StringBuffer代替。
4.儘可能使用區域性變數。
5.及時關閉流:進行資料庫連線、I/O流操作,在使用完畢後,及時關閉以釋放資源。
6.儘量減少對變數的重複計算:明確一個概念,對方法的呼叫,即使方法中只有一句語句,也是有消耗的,包括建立棧幀、呼叫方法時保護現場、呼叫方法完畢時恢復現場等。
7.儘量採用懶載入的策略,即在需要的時候才建立。
8.慎用異常
異常對效能不利。丟擲異常首先要建立一個新的物件,Throwable介面的建構函式呼叫名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆疊,收集呼叫跟蹤資訊。只要有異常被丟擲,Java虛擬機器就必須調整呼叫堆疊,因為在處理過程中建立了一個新的物件。異常只能用於錯誤處理,不應該用來控制程式流程。
9.不要在迴圈中使用try…catch…,應該把其放在最外層。
10.如果能估計到待新增的內容長度,為底層以陣列方式實現的集合、工具類指定初始長度。
11.當複製大量資料時,使用System.arraycopy()命令。
12.乘法和除法使用移位操作:移位操作雖然快,但是可能會使程式碼不太好理解,因此zuihao加上相應的註釋。
13.迴圈內不要不斷建立物件引用。
14.基於效率和型別檢查的考慮,應該儘可能使用array,無法確定陣列大小時才使用ArrayList。
15.儘量使用HashMap、ArrayList、StringBuilder,除非執行緒安全需要,否則不推薦使用Hashtable、Vector、StringBuffer,後三者由於使用同步機制而導致了效能開銷。
16.不要將陣列宣告為public static final。
學習就像逆水行舟,學習Java更是這樣,畢竟Java已經雄踞程式語言排行diyi已經十幾年了,但正是這十幾年,也使得Java各方面的體系也比其他語言更加完整和先進,有什麼不懂的問題很容易就能到到解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2723993/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java學習之程式碼優化Java優化
- jmeter學習指南之Beanshell 呼叫 java 程式碼的三種方式JMeterBeanJava
- 好程式設計師Java學習路線分享MyBatis之執行緒最佳化程式設計師JavaMyBatis執行緒
- 學習 Java 之 位元組碼驗證Java
- Java學習之AWT GUI程式設計JavaGUI程式設計
- Java學習之Swing Gui程式設計JavaGUI程式設計
- 【學習筆記】初次學習斜率最佳化的程式碼及筆記筆記
- 如何學習用Java編寫程式碼?Java
- Java學習之7種排序演算法的完整例項程式碼Java排序演算法
- Java學習之介面Java
- 程式碼最佳化與程式加速指南——針對數值最佳化和深度學習領域深度學習
- Python進階學習之程式碼閱讀Python
- Java開發學習(五十)----MyBatisPlus快速開發之程式碼生成器解析JavaMyBatis
- Java 容器學習之 HashMapJavaHashMap
- Java學習之反射篇Java反射
- Java學習之陣列Java陣列
- 好程式設計師Java學習路線之集程式設計師Java
- Java學習之陣列練習Java陣列
- 好程式設計師Java學習路線之SpringMVC之基本配置程式設計師JavaSpringMVC
- jmeter學習指南之最佳化指令碼JMeter指令碼
- Centos學習筆記14 – java程式啟動指令碼CentOS筆記Java指令碼
- GET程式碼學習
- java原始碼學習-SpliteratorJava原始碼
- java原始碼學習-AbstractSequentialListJava原始碼
- jQuery原始碼學習之$()jQuery原始碼
- 原始碼學習之EllipsizingTextView原始碼TextView
- 好程式設計師Java學習路線分享實戰Tomcat效能最佳化程式設計師JavaTomcat
- 好程式設計師Java學習路線分享氣泡排序及最佳化程式設計師Java排序
- Java進階學習之Java架構師的學習路線Java架構
- elasticsearch之Java呼叫原生程式碼ElasticsearchJava
- java學習回顧---執行緒和同步程式碼塊Java執行緒
- Java學習筆記之----------Java基本知識Java筆記
- Java併發之執行緒池ThreadPoolExecutor原始碼分析學習Java執行緒thread原始碼
- Android Utils 之 Vector 學習筆記(一)—— VectorImpl 程式碼分析Android筆記
- 【機器學習】--xgboost初始之程式碼實現分類機器學習
- Python學習之如何簡化程式碼?六大技巧!Python
- 好程式設計師Java學習路線之Spring框架之動態代理程式設計師JavaSpring框架
- Java學習之基礎語法練習Java