程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java機能的十一個用法分享

Java機能的十一個用法分享

編輯:關於JAVA

Java機能的十一個用法分享。本站提示廣大學習愛好者:(Java機能的十一個用法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是Java機能的十一個用法分享正文


Java說話習氣用語

1。輪回

在主要的輪回裡,清除輪回終止斷定時的辦法挪用。
例如:將
for(int i=0; i<collection.size();i++){ ... }
調換為…
for(int i=0; n=collection.size();i<n;i++){...}
平日,把與輪回index不相干的移到輪回的裡面
for(int i=0; terminal=x.length;i<terminal;i++){x[i] = x[i]/scaleA *scaleB;}
應當該成:
Double scale = scaleB*scaleA;for(int i=0; terminal=x.length;i<terminal;i++){x[i] = x[i]/scale ;}

2。字符串

清除字符串聯接

創立長字符串時,老是應用StringBuffter取代String
事後分派StringBuffer空間 StringBuffer sb = new StringBuffer(5000);

3。根本數據類型

在主要的輪回裡應用根本數據類型(int型數據平日比long/double型數據更快)
根本數據類型(Boolean,Integer,etc)的包裝類重要用在當傳遞的辦法參數必需是一個對象的援用時(而不是一個根本數據類型)
對一切的常量代數表達式應用static final潤飾符
使常量更輕易援用(編譯器事後盤算常量表達式)

4。異常

異常只用於單個真實的毛病前提 如 拋出異常時
拋出一個異常和履行一個catch代碼塊消費是很高的(重要因為當創立一個異常時要取得線程棧的一個快照)
只當前提真的異常時才拋出一個異常
拋出異常起首要創立一個新的對象。
Throwable接口的結構函數挪用名為fillInStackTrace()的當地(Native)辦法,fillInStackTrace()辦法檢討客棧,搜集挪用跟蹤信息。
只需有異常被拋出,VM就必需調劑挪用客棧,由於在處置進程中創立了一個新的對象。
異常只能用於毛病處置,不該該用來掌握法式流程。
使編譯器和運轉時最優化,將幾個辦法挪用放在一個try/catch塊中,而不是為每一個辦法挪用完成幾個try/catch塊

try{ Some.method1(); //Difficut for java1.4 }catch(method1Exception e){ handle exception
1 // to optimize this code } try{ Some.method2(); //Difficut for java1.4 }catch(method2Exception e){ handle exception
2 // to optimize this code } try{ Some.method3(); //Difficut for java1.4 }catch(method3Exception e){ handle exception
3 // to optimize this code
}

應當寫為:

try{ Some.method1(); Some.method2(); Some.method3(); //Difficut for java1.4 }catch(method1Exception e){ handle exception 1 }catch(method2Exception e){ handle exception 2 }catch(method3Exception e){ handle exception 3 }

5。基准

留意,一切這些技能會因分歧的平台和虛擬機而分歧

一 例如:在有些servlet容器內,經由過程一個OutputStream作為字節輸入會更快

二 在其它的容器內,經由過程一個PrintWriter輸入字符會更快

這些技能描寫的是最可移植的建議

你能夠須要運轉一些基准來斷定在你的平台上怎樣樣是最快的

6。不消new症結詞創立類的實例

用new症結詞創立類的實例時,結構函數鏈中的一切結構函數都邑被主動挪用。

但假如一個對象完成了Cloneable接口,我們可以挪用它的clone()辦法。clone()辦法不會挪用任何類結構函數。

在應用設計形式(Design Pattern)的場所,假如用Factory形式創立對象,則改用clone()辦法創立新的對象實例異常簡略。

例如,上面是Factory形式的一個典范完成:

public static Credit getNewCredit() { return new Credit(); }

優化後:

private static Credit BaseCredit = new Credit(); public static Credit getNewCredit() { return (Credit) BaseCredit.clone();}

下面的思緒關於數組處置異樣很有效。

7。應用非壅塞I/O

Java版本較低的JDK不支撐非壅塞I/O API。為防止I/O壅塞,一些運用采取了創立年夜量線程的方法(在較好的情形下,會應用一個緩沖池)。這類技巧可以在很多必需支撐並發I/O流的運用中見到,如Web辦事器、報價和拍賣運用等。但是,創立Java線程須要相當可不雅的開支。

JDK 1.4引入了非壅塞的I/O庫(java.nio)。假如運用請求應用版本較早的JDK,在這裡有一個支撐非壅塞I/O的軟件包。

8。不要反復初始化變量

默許情形下,挪用類的結構函數時, Java會把變量初始化成肯定的值:一切的對象被設置成null,整數變量(byte、short、int、long)設置成0,float和 double變量設置成0.0,邏輯值設置成false。

當一個類從另外一個類派生時,這一點特別應當留意,由於用new症結詞創立一個對象時,結構函數鏈中的一切結構函數都邑被主動挪用。

9。盡可能指定類的final潤飾符

帶有final潤飾符的類是弗成派生的。在Java焦點API中,有很多運用final的例子,例如java.lang.String。為String類指定final避免了人們籠罩length()辦法。

別的,假如指定一個類為final,則該類一切的辦法都是final。Java編譯器會尋覓機遇內聯(inline)一切的final辦法(這和詳細的編譯器完成有關)。此舉可以或許使機能均勻進步50%。

10。盡可能應用部分變量

挪用辦法時傳遞的參數和在挪用中創立的暫時變量都保留在棧(Stack)中,速度較快。其他變量,如靜態變量、實例變量等,都在堆(Heap)中創立,速度較慢。別的,依附於詳細的編譯器/JVM,部分變量還能夠獲得進一步優化。請拜見《盡量應用客棧變量》。

11。乘法和除法

斟酌上面的代碼:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

優化後:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

修正後的代碼不再做乘以8的操作,而是改用等價的左移3位操作,每左移1位相當於乘以2。響應地,右移1位操作相當於除以2。值得一提的是,固然移位操作速度快,但能夠使代碼比擬難於懂得,所以最好加上一些正文。

private static Credit BaseCredit = new Credit();public static Credit getNewCredit() {return (Credit) BaseCredit.clone();}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved