国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java循環(huán)對比:傳統(tǒng)for循環(huán)、增強型for循環(huán)和forEach循環(huán)

這篇具有很好參考價值的文章主要介紹了Java循環(huán)對比:傳統(tǒng)for循環(huán)、增強型for循環(huán)和forEach循環(huán)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、傳統(tǒng)for循環(huán)

傳統(tǒng)的for循環(huán)是一種經(jīng)典的循環(huán)結構,在Java中廣泛使用。

以下是傳統(tǒng)for循環(huán)的特點:

靈活控制:傳統(tǒng)for循環(huán)使用形式為for (初始化表達式; 終止條件; 步進表達式)的語法,可以手動控制循環(huán)的索引,并根據(jù)需要執(zhí)行自定義操作。

索引訪問:傳統(tǒng)for循環(huán)通過索引訪問集合或數(shù)組中的元素,可以直接讀取和修改元素的值。

例如:

import java.util.Arrays;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        for (int i = 0; i < numbers.size(); i++) {
            System.out.println(numbers.get(i));  // 讀取元素的屬性值或執(zhí)行操作是允許的
            numbers.set(i, 10);  // 直接修改元素的值是允許的
        }
    }
}

底層操作:相比增強型for循環(huán),傳統(tǒng)for循環(huán)提供了更底層的操作,更加靈活,但也更加繁瑣。

適用對象:適用于任何實現(xiàn)了Iterable或Iterator接口的集合類。

示例代碼:

public class Demo {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
    }
}

傳統(tǒng)for循環(huán)代碼結構是這樣的:

for(循環(huán)變量的初始聲明;循環(huán)的判定條件;改變循環(huán)變量的條件){

循環(huán)體

}

其中執(zhí)行順序是:①循環(huán)變量的初始聲明(聲明循環(huán)變量) ②循環(huán)的判斷條件(判定是否繼續(xù)執(zhí)行循環(huán),是boolean值) ③循環(huán)體(想要重復執(zhí)行的代碼段) ④改變循環(huán)變量的條件(用于結束循環(huán)) ⑤再回到2中判斷是否跳出循環(huán),如果判斷結果是true,繼續(xù)上述過程。如果判斷結果是false,則跳出整個循環(huán)代碼段,執(zhí)行后續(xù)代碼。

如測試通過遍歷方式,實現(xiàn)為數(shù)組賦值,賦值為100,200,300,400,500

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        int[] arr = new int[5];
        int num = 100;
        for (int i = 0; i < arr.length; i++) {
            arr[i] = num;
            num += 100;
        }
        System.out.println(Arrays.toString(arr));
    }
}

代碼的輸出結果是這樣的:[100, 200, 300, 400, 500]

顯而易見,普通for循環(huán)通過下標索引,將值賦值到了數(shù)組內部。

2、增強型for循環(huán)

增強型for循環(huán),也稱為foreach循環(huán),是一種簡化版的循環(huán)語法。它可以用于遍歷數(shù)組或實現(xiàn)了Iterable接口的集合類。

以下是增強型for循環(huán)的特點:

語法簡潔:增強型for循環(huán)使用形式為for (元素類型 元素變量 : 集合或數(shù)組)的語法,使代碼更易讀和編寫。

只讀訪問:在每次迭代中,增強型for循環(huán)提供對當前元素的只讀訪問權限,不能直接修改元素的值。

例如:

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("World");
        System.out.println(list);
        for (String s : list) {
            s = "New Value";  // 嘗試修改元素的值
        }
        System.out.println(list);
    }
}

?

適用對象:適用于數(shù)組或實現(xiàn)了Iterable接口的集合類。

示例代碼:

import java.util.Arrays;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Apple", "Banana", "Orange");
        for (String fruit : list) {
            System.out.println(fruit);
        }
    }
}

?

增強型for循環(huán)代碼結構是這樣的:

for(接收數(shù)組元素的類型 變量名:數(shù)組){

變量名代表數(shù)組中的每一個數(shù)據(jù)

}

增強for可以遍歷數(shù)組中的每一個元素,用前面的變量名來接收。我強調一下是接收,因為類型所定義的變量只是用來接收數(shù)組中各個元素,而不是將每個元素分離出來。

列如上面問題,測試通過2種遍歷方式,分別實現(xiàn)為數(shù)組賦值,賦值為100,200,300,400,500

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        int[] arr = new int[5];
        int num = 100;
        for (int i : arr) {
            i = num;
            num += 100;
        }
        System.out.println(Arrays.toString(arr));
    }
}

代碼輸出結果是這樣的:[0, 0, 0, 0, 0]

也就是說增強for循環(huán)根本沒有將值傳到數(shù)組內部。這也是普通for與增強for的區(qū)別,普通for循環(huán)可以實現(xiàn)為數(shù)組賦值,根據(jù)索引操作;foreach只能遍歷獲取,不能修改數(shù)組中的數(shù)據(jù)。

除此之外,:前面是接收數(shù)組元素的類型,這里強調的是,這里定義的類型是接受數(shù)組元素的類型,不必是數(shù)組的類型關系。

for(long|float|double|.. i:arr){
	i=num;
	num+=100;
}

其實類型沒有那么嚴格,只要是能接收這個int型的數(shù)組arr的元素即可。當然不能接收的其他類型,比如byte,short ,char…就會報錯。

?

3、forEach循環(huán)

forEach是Java 8中引入的一個方法,用于遍歷集合中的元素并對其執(zhí)行某種操作。它可以接受一個函數(shù)作為參數(shù),這個函數(shù)會對集合中的每個元素進行操作。這個函數(shù)可以是Lambda表達式,也可以是一個普通的函數(shù)接口。

Lambda表達式在Java 8中被引入,是一種簡潔,函數(shù)式的方法來編寫某些操作。Lambda表達式主要被用于創(chuàng)建只有一個方法的接口,這個接口可以包含一個參數(shù)列表和一個表達式或一個塊語句。這種表達式或塊語句就是Lambda體。

以下是Lambda表達式for循環(huán)的特點:

函數(shù)式風格:Lambda表達式for循環(huán)采用函數(shù)式編程風格,通過Lambda表達式定義循環(huán)體的操作,使代碼更加簡潔和易讀。

自動迭代:與增強型for循環(huán)類似,Lambda表達式for循環(huán)自動迭代集合或數(shù)組中的元素,無需手動控制索引。

例如:

import java.util.Arrays;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
        // 使用Java 8的forEach和Lambda表達式
        list.forEach(fruit -> System.out.println(fruit));
    }
}

4、效率簡單對比

說明:測試可能有不嚴謹?shù)牡胤?時間,機器,執(zhí)行順序,cpu運行后效率降低也有可能,僅供參考

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        long[] numbers = {10000L, 100000L, 1000000L, 10000000L};
        for (int j= 0; j < numbers.length; j++) {
            long times = numbers[j];
            System.out.println("操作次數(shù):" + times);
            List<String> list = new ArrayList<>();
            List<String> list1 = new ArrayList<>();
            List<String> list2 = new ArrayList<>();
            List<String> list3 = new ArrayList<>();
            for (int i = 0; i < times; i++) {
                list.add(new String());
            }
            long startTime = System.currentTimeMillis();
            //普通for
            for (int i = 0; i < list.size(); i++) {
                list1.add(list.get(i));
            }
            long endTime = System.currentTimeMillis();
            System.out.println("普通for時間(毫秒):" + (endTime - startTime));
            //增強for
            long startTime1 = System.currentTimeMillis();
            for (String s : list) {
                list2.add(s);
            }
            long endTime1 = System.currentTimeMillis();
            System.out.println("增強for時間(毫秒):" + (endTime1 - startTime1));

            long startTime2 = System.currentTimeMillis();
            //forEach
            list.forEach(s -> list3.add(s));
            long endTime2 = System.currentTimeMillis();
            System.out.println("forEach時間(毫秒):" + (endTime2 - startTime2));
        }
    }
}

執(zhí)行結果:

操作次數(shù):10000

普通for時間(毫秒):1

增強for時間(毫秒):1

forEach時間(毫秒):59

操作次數(shù):100000

普通for時間(毫秒):2

增強for時間(毫秒):2

forEach時間(毫秒):3

操作次數(shù):1000000

普通for時間(毫秒):37

增強for時間(毫秒):10

forEach時間(毫秒):8

操作次數(shù):10000000

普通for時間(毫秒):203

增強for時間(毫秒):170

forEach時間(毫秒):184

5、適用場景的選擇

選擇合適的循環(huán)方式取決于具體的需求和操作。以下是一些建議的使用場景:

傳統(tǒng)for循環(huán):適用于需要手動控制索引、執(zhí)行自定義操作或修改集合或數(shù)組元素值的場景。

增強型for循環(huán):適用于簡單的遍歷和只讀操作,不需要修改集合或數(shù)組的元素。

Lambda表達式+forEach循環(huán):適用于函數(shù)式編程風格,簡化代碼,并且無需手動控制索引的場景。

根據(jù)具體的需求,我們可以靈活選擇不同的循環(huán)方式,以實現(xiàn)代碼的簡潔、可讀性和性能的平衡。文章來源地址http://www.zghlxwxcb.cn/news/detail-731007.html

到了這里,關于Java循環(huán)對比:傳統(tǒng)for循環(huán)、增強型for循環(huán)和forEach循環(huán)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • TD-W89841N增強型無線路由器怎么設置寬帶自動撥號上網(wǎng)?

    在設置寬帶自動撥號上網(wǎng)前,我們需要了解無線路由器后端的端口起到什么作用。無線貓兼路由器后面的端口可以分為:【1】ADSL端口;【2】小區(qū)寬帶LAN/WAN端口;【3】電腦連接端口;(LAN1至LAN4:在使用的是ADSL端口下并且未開啟IPTV功能時。)【4】IPTV端口即LAN2(需開啟IPT

    2024年02月08日
    瀏覽(24)
  • FQPF27P06 P溝道增強型MOS管電壓、原理、導通條件!

    FQPF27P06 P溝道增強型MOS管電壓、原理、導通條件!

    關于P溝道增強型功率MOSFET? P溝道增強型功率MOSFET是一種常見的功率場效應晶體管,它主要用于功率放大和開關電路。與N溝道增強型MOSFET相比,P溝道增強型MOSFET的工作原理相反。 在P溝道增強型MOSFET中,溝道區(qū)域是由P型材料形成的。當施加正電壓到晶體管柵極上時,電場會

    2024年02月11日
    瀏覽(34)
  • MOS管工作區(qū)間及開通過程分析——以N溝道增強型MOS為例

    MOS管工作區(qū)間及開通過程分析——以N溝道增強型MOS為例

    N溝道增強型MOS管的結構如圖1所示,P型襯底上制作兩個高摻雜的N區(qū),引出作為漏極D和源極S,襯底上再制作一塊絕緣層,絕緣層上在制作一層金屬電極,引出作為柵極G,即構成了常見的N溝道增強型MOS管。一般而言,襯底B和S極會連在一起,當在柵極處加正電壓時,靠近襯底的

    2024年02月09日
    瀏覽(17)
  • java 增強for循環(huán)

    學的不是技術,更是夢想?。?!

    2024年02月14日
    瀏覽(21)
  • Kotlin基礎入門 - for、forEach 循環(huán)

    Kotlin基礎入門 - for、forEach 循環(huán)

    不論身處何方 for循環(huán)這種操作都隨處可見,鑒于大多數(shù)Android開發(fā)都是從Java轉到Kt的,所以我的思路是從Java的使用習慣來講一些Kt 的for、forEach 循環(huán)方式 基礎 for循環(huán) for循環(huán) 一般作用于 list、map數(shù)據(jù)集合 ,這里我直接創(chuàng)建了一個只讀List集合 提前了解 慣性 for循環(huán) 所謂的慣性

    2024年01月16日
    瀏覽(29)
  • 【JS】for 與 forEach 分別如何跳出循環(huán)

    【JS】for 與 forEach 分別如何跳出循環(huán)

    for 循環(huán) 在 for 循環(huán)中,退出循環(huán)的兩種方式: break; 退出整個循環(huán) continue; 退出當次循環(huán) break 退出整個循環(huán) continue 退出當次循環(huán) forEach 在JavaScript中, forEach 方法是用于遍歷數(shù)組的方法,它會對數(shù)組中的每個元素執(zhí)行指定的操作。 forEach 方法本身 并不提供直接的方式來跳出循

    2024年02月12日
    瀏覽(26)
  • matlab中的foreach、for in 循環(huán)、迭代器

    I 是個行向量,對于行向量,可以像上面的語法那樣在 for 循環(huán)中使用,遍歷 I 中的每一個元素。 如果 I 是列向量,就不行了。 可以看到 a 直接被賦值成整個列向量。 可見,for 循環(huán)中被用來迭代的矩陣會被看成只有一行,里面的元素是一個個列向量,for 循環(huán)一次取出里面的

    2024年02月11日
    瀏覽(30)
  • 數(shù)組的5種遍歷(for循環(huán)、for...in、for...of、forEach()、map()

    數(shù)組:內存中一塊連續(xù)的存儲單元,這些存儲單元具有共同的名稱,不同的索引(下標)。 數(shù)組5種遍歷: 1、for循環(huán) ? ? ? ?任何數(shù)組都可以使用for循環(huán)進行遍歷,使用頻率最高 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (let i = 0; i arr.length; i++) { ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年02月06日
    瀏覽(22)
  • 常見遍歷方法 for循環(huán)、forEach、map、filter、find、findIndex、some、every

    來自于遠古的遍歷方式,并且涵蓋多種手段,例如for in 和for of。 for循環(huán) 中使用break和continue語句(終止和跳過本次循環(huán)): for of 用來遍歷數(shù)組也是可以的 for of 中也可以用break和continue for in 也可以遍歷數(shù)組,但不推薦 for in 中也可以用break和continue forEach是ES5中操作數(shù)組的一種

    2024年02月08日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包