java for循環如何優化_java for循環及其優化

for循環

1.首先知道,for循環的3個表達式的意思:

表達式1: 一般為賦值表達式,給控制變量賦初值;

表達式2: 關系表達式或邏輯表達式,循環控制條件;

表達式3: 一般為賦值表達式,給控制變量增量或減量。

3個表達式都可以為空,第2個表達式為空,表示條件一直為true,for無限循環。

for(;;){

System.out.println("hello");

}

//輸出結果:無限輸出,瘋狂輸出

hello

hello

……

2.第1個初始化表達式,可以對多個同類型變量賦值;第3個條件若有多個條件,可以用邏輯運算符(&& 、 || 、!)連接;第3個表達式可以用逗號隔開多個表達式

for(int i=0,j=0;i<10&&j<5;i++,j++){

System.out.println("i="+i+",j="+j);

}

for循環優化

1、在參數表達式上優化

1.1、不要在表達式上做復雜運算

如下代碼

List list = new ArrayList<>();

for (int i = 0; i < list.size(); i++) {

}

for的第2個表達式上面用了list.size(),這樣就導致了每次循環到這里都要去進行一次list的個數計算,會降低性能;應該改為這樣

List list = new ArrayList<>();

for (int i = 0, len = list.size(); i < len; i++) {

}

1.2、循環嵌套,應該采用外大內小型;也就是循環次數多的for放在外層,循環次數少的for放在內層。

for(int i=0;i<1000;i++){

for(int j=0;j<100;j++){

for(int k=0;k<10;k++){

function(i,j,k);

}

}

}//耗時333 3105 納秒

改為

for(int k=0;k<10;k++){

for(int j=0;j<100;j++){

for(int i=0;i<1000;i++){

function(i,j,k);

}

}

}//耗時282 7670 納秒

2、無用邏輯要放在循環外,避免重復計算發生

int a = 10, b = 11;

for (int i = 0; i < 10; i++) {

i = i * a * b;

}

改為

int c = a * b;

for (int i = 0; i < 10; i++) {

i = i * c;

}

3、try catch語句放到循環外,因為抓捕異常是非常耗時的,所以放到for外面一次抓取

for (int i = 0; i < 10; i++) {

try {

} catch (Exception e) {

}

}

改為

try {

for (int i = 0; i < 10; i++) {

}

} catch (Exception e) {

} 參考資料: http://www.cnblogs.com/ywl925/p/3608192.html http://blog.csdn.net/liushuijinger/article/details/41546347 http://cgs1999.iteye.com/blog/1596671

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271130.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ElementUI+VUE 日期控件禁用用法

今天給大家整理一下ElementUIVUE 日期控件禁用用法&#xff0c;希望對大家有所幫助&#xff01;HTML文件<el-date-pickerv-model"value"type"date":editable"false"placeholder"開始日期"value-format"yyyy-MM-dd":picke…

利用rfcomm實現樹莓派與手機通信_工業物聯網 | 怎么用NodeRed實現樹莓派與阿里云物聯網平臺通信?虹科告訴你!...

想獲取更多IIOT干貨請點擊藍字&#xff0c;關注我們虹科工業樹莓派高性能多接口寬溫--適應惡劣環境★★★★★Node-RED是構建物聯網(IoT)應用程序的強大工具&#xff0c;它使用可視化的編程方法&#xff0c;允許開發人員將預定義的代碼塊(稱為“節點”)連接在一起以執行任務。當…

關于“using namespace std”

http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html轉載于:https://www.cnblogs.com/prayer521/p/5762948.html

mysql的mtr是指什么_MySQL中MTR的概念

MTR全稱是Mini-Transaction&#xff0c;顧名思義&#xff0c;可以理解為"最小的事務"&#xff0c;MySQL中把對底層頁面的一次原子訪問的過程稱之為一個Mini-Transaction&#xff0c;這里的原子操作&#xff0c;指的是要么全部成功&#xff0c;要么全部失敗&#xff0…

前端:Element UI 多選框組用法筆記

今天給大家分享一下Element UI 多選框組用法筆記&#xff0c;直接上代碼&#xff01;<html><head></head><body><el-form> <el-form-item label"興趣愛好:"> <el-checkbox-group v-model"form.checkList"> <…

xiaocms 關于搜索功能 添加搜索字段

自己折磨了好幾天 就是沒研究個出像樣的的東西 看了一下 core/controller/index.php searchAction()方法 但是不知從何下手。查了sql語句&#xff0c;還是沒實現 請教了一位自學php的小弟 &#xff0c;人家三下五除二的功夫就做出來了 解決的思路是一樣的&#xff0c;可我就是…

python編程第四版_清華編程教授強力推薦《Python編程》,指導你如何學習python

Python編程真的那么容易嗎&#xff1f;僅僅是看理論就可以學以致用嗎&#xff1f;今天我給你介紹的這本書&#xff0c;也許會讓你開始改變這種想法&#xff0c;因為這本書上的練習和案例以及指導本身就足夠學好Python了。清華編程教授強力推薦《Python編程》&#xff0c;指導你…

java 構造 statict_java學習:構造方法、static、final

在了解了java的基本數據結構后&#xff0c;開始學習java的類。java中的類也是一種數據結構&#xff0c;我認為它和C中的結構體挺像。類中可以有屬性和方法。類的方法中比較特別的是構造方法。java中類的構造方法要和類名相同&#xff0c;且沒有返回值。構造方法主要用于為類的對…

微信終于可以發送大文件了!

來源丨擴展迷EXTFANS&#xff08;ID&#xff1a;infinitydaily&#xff09;https://mp.weixin.qq.com/s/EAwYnq7435oMQnz6JqkHYg微信作為一款國民級的通訊軟件&#xff0c;雖然用戶基數龐大&#xff0c;但在用戶體驗方面一直飽受詬病&#xff0c;尤其是在部分功能方面&#xff…

Iterable 超級接口

這是一個老祖宗,一代一代往下撥 collection 的方法如下,是一個跟接口方法如下,見API collection : add():添加一個元素     addAll():添加一組元素 clear();清空     remove(Object o) &#xff1a;移除     removeAll():移除一組元素     isEmpty();判斷集合…

pc寄存器or程序計數器

一&#xff1a;PC寄存器解釋 二&#xff1a;PC寄存器的作用

項目設計基礎:處理過程設計相關知識介紹?

處理過程設計關鍵是用一種適當的表示形式來描述每個模塊執行過程。常用的表示形式有圖形、語言、表格。比如傳統的框圖、判定表等。1、程序流程圖&#xff08;Program Flow Chart&#xff09;程序流程圖也成為程序框圖&#xff0c;是最早、流行最廣泛的一種圖形表示方法。程序流…

關于JS中的定時器!!!

定時器: 周期性定時器 一次性定時器 1. 周期性定時器: 讓程序每隔一段時間間隔&#xff0c;反復執行一項任務 何時使用: 只要連續&#xff0c;有規律的持續播放的動畫 如何使用: 3件事&#xff1a; 1. ***任務函數: 定時器每次執行的任務 function task(){...} 任務函數通常要…

python 更新數據庫歷史_python 實現數據庫中數據添加、查詢與更新的示例代碼

一、前言最近做web網站的測試&#xff0c;遇到很多需要批量造數據的功能&#xff1b;比如某個頁面展示數據條數需要達到10000條進行測試&#xff0c;此時手動構造數據肯定是不可能的&#xff0c;此時只能通過python腳本進行自動構造數據&#xff1b;本次構造數據主要涉及到在某…

git沖突“accept theirs”和“accept yours”

Accept Yours 就是直接選取本地的代碼&#xff0c;覆蓋掉遠程倉庫的 Accept Theirs 是直接選取遠程倉庫的&#xff0c;覆蓋掉自己本地的 我們選擇Merge,自己手動行進選擇、修改。 這里左邊部分是你本地倉庫的代碼&#xff0c;右邊部分是遠程倉庫的代碼&#xff0c;中間的res…

系統實施基礎:系統實施的相關知識介紹

1、系統實施的目的系統實施屬于新系統開發工作的最后一個階段&#xff0c;屬于交付系統給客戶的最后階段。2、系統實施的任務硬件準備&#xff1a;按照總體設計方案準備服務器、配置網絡系統。主要包括計算機主機/云服務器、輸入輸出設備、存儲設備、通信設備等。軟件準備&…

線程同步以及yield()、wait()、Notify()、Notifyall()

一、線程同步 1、線程同步的目的是為了保護多個線程訪問一個資源時對資源的破壞。2、線程同步方法是通過鎖來實現&#xff0c;每個對象都有切僅有一個鎖&#xff0c;這個鎖與一個特定的對象關聯&#xff0c;線程一旦獲取了對象鎖&#xff0c;其他訪問該對象的線程就無法再訪問該…

面試:整理面試中常被問到的8種數據結構

數據結構是一種特殊的組織和存儲數據的方式&#xff0c;可以使我們可以更高效地對存儲的數據執行操作。數據結構在計算機科學和軟件工程領域具有廣泛而多樣的用途。幾乎所有已開發的程序或軟件系統都使用數據結構。此外&#xff0c;數據結構屬于計算機科學和軟件工程的基礎。當…

python繪制繁花曲線代碼_使用python和pygame繪制繁花曲線的方法

前段時間看了一期《最強大腦》&#xff0c;里面各種繁花曲線組合成了非常美麗的圖形&#xff0c;一時心血來潮&#xff0c;想嘗試自己用代碼繪制繁花曲線&#xff0c;想怎么組合就怎么組合。真實的繁花曲線使用一種稱為繁花曲線規的小玩意繪制&#xff0c;繁花曲線規由相互契合…