Java程式設計師的八個最佳實踐
betterprogramming文章提出了一些專家建議,這些建議將提高Java程式碼的效率。
1.小心使用字串
如果在一個for迴圈中使用+運算子串聯了兩個字串,則每次都會建立一個新的字串物件。
這浪費了記憶體並增加了效能時間。另外,在例項化String物件時,應避免建構函式,而應直接進行例項化。這是一些程式碼:
// |
String bad = new String("Hello World"); |
//更快的例項化
String good = "Hello World!"; |
2.避免不必要的物件建立
物件建立是Java中最昂貴的操作(就記憶體利用率而言)。因此,建議僅在必要時才建立或初始化物件。以下程式碼給出了一個示例:
import java.util.ArrayList; import java.util.List; public class Books { private List books; public List getBooks() { //Initialize if required if(null == books) { books = new ArrayList(); } return books; } } |
3.返回空集合而不是空
如果程式返回的集合沒有任何值,請確保返回Empty集合而不是Null元素。它將節省大量if-else 有關Null Elements的檢查。以下程式碼將幫助您:
public List getBooks() { if (null == books) { books = new ArrayList(); } return books; } |
4.使用邏輯運算子檢查奇數
看一下下面的程式碼行,並確定它們是否可用於精確識別給定數字是否為奇數:
public boolean oddOrNot(int num) { return num % 2 == 1; } |
這些行看似正確,但從統計學上講,它們每四次就會返回不正確的結果。如果使用負的奇數,則除以2的餘數將不為1。因此,返回的結果將為false,這是不正確的!
可以將其修復如下:
public boolean oddOrNot(int num) { return (num & 1) != 0; } |
使用此程式碼,不僅可以解決負奇數的問題,而且還對程式碼進行了高度最佳化。由於邏輯運算乘法比除法快得多,因此在第二個程式碼段中可以更快地獲得結果。
5.避免記憶體洩漏
記憶體洩漏通常會導致軟體效能下降。由於Java自動管理記憶體,因此開發人員沒有太多控制權。但是,仍有一些標準做法可以用來保護您的應用程式免受記憶體洩漏的影響。
- 查詢完成後,請始終釋放資料庫連線。
- 嘗試儘可能多地使用一個Finally塊。
- 釋放儲存在靜態表中的例項。
6.必要時使用手動操作
為了提高計算能力,Java提供了兩種選擇:
1.乘法:
double square = double a * double a; // Optimized double cube = double a * double a * double a; // Non-optimized double cube = double a * double square; // Optimized double quad = double a * double a * double a * double a; // Non-optimized double quad = double square * double square; // Optimized |
2. Math.pow
pow方法用於計算不可能進行乘法的地方(基數指數)
double cube = Math.pow(base, exponent); |
Math.pow()僅在必要時使用。例如,如果指數是一個小數值。那是因為Math.pow()方法通常比乘法慢300-600倍。
7.避免對索引使用For迴圈
請不要使用帶有索引(或計數器)變數的for迴圈。通常,索引變數容易出錯,因為我們可能會在迴圈的主體中意外更改它,或者我們可能從1而不是0開始索引。
示例遍歷字串陣列:
String[] names = {"Alice", "Bob", "Carol", "David", "Eric", "Frank"}; for (int i = 0; i < names.length; i++) { doSomething(names[i]); } |
索引變數i在for迴圈中是改變的,這可能會導致意外結果。我們可以透過使用如下所示的增強for迴圈來避免潛在的問題:
for (String aName :names){ doSomething(aName); } |
這不僅消除了潛在的問題,而且使程式碼更簡潔。
8.選擇正確的時間操作
有兩種使用Java進行時間操作的標準方法:System.currentTimeMillis()和System.nanoTime()。
問題是,您應在哪種情況下選擇哪種?原則上,它們都執行相同的操作,但在以下方面有所不同:
- System.currentTimeMillis()需要大約1/1000秒到15/1000秒之間的時間(取決於系統),但是System.nanoTime()大約需要1 / 1000,000秒(1,000奈米)
- System.currentTimeMillis()花費幾個時鐘週期執行讀取操作,而System.nanoTime()花費100個以上時鐘週期。
- System.currentTimeMillis()反映了絕對時間(自1970年1月1日以來的毫秒數00:00(Epoch時間)),但System.nanoTime()不一定代表任何參考點。
相關文章
- [分享]2021 年對 React 前端程式設計師的 10 個程式碼最佳實踐建議React前端程式設計師
- 13 個設計 REST API 的最佳實踐RESTAPI
- Python程式設計規範+最佳實踐Python程式設計
- 資料庫設計的十個最佳實踐資料庫
- Laravel最佳實踐–事件驅動程式設計Laravel事件程式設計
- Laravel 最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- Laravel最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- 函數語言程式設計最佳實踐函數程式設計
- Java併發程式設計實踐Java程式設計
- TypeScript 資料模型層程式設計的最佳實踐TypeScript模型程式設計
- [01] C#網路程式設計的最佳實踐C#程式設計
- 來自Google資深工程師的API設計最佳實踐Go工程師API
- 設計微服務的最佳實踐微服務
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- Spring Boot中五個設計模式最佳實踐Spring Boot設計模式
- 回望八年的程式設計師生涯程式設計師
- 程式設計師最佳網站程式設計師網站
- MaxCompute表設計最佳實踐
- PHP程式設計師解決問題能力的八個級別PHP程式設計師
- Java的API設計實踐JavaAPI
- 領域驅動設計最佳實踐--程式碼篇
- 資料庫設計中的6個最佳實踐步驟資料庫
- Java最佳實踐Java
- 程式設計師職業規劃-實踐篇程式設計師
- 程式設計師必備基礎:改善Java程式的20個實用建議程式設計師Java
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- Java併發程式設計 - 第十一章 Java併發程式設計實踐Java程式設計
- Java併發程式設計實踐-this溢位Java程式設計
- JAVA併發程式設計實踐 下載Java程式設計
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- react 設計模式與最佳實踐React設計模式
- 處理Java異常的9個最佳實踐Java
- Java異常處理的9個最佳實踐Java
- 處理Java異常的10個最佳實踐Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java學習路線分享實戰Tomcat效能最佳化程式設計師JavaTomcat
- Java程式設計師必須掌握的7個Java效能指標!Java程式設計師指標
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java