数组和集合的增强for

数组的增强for

@Test
public void test1(){
    Integer[] integers =   new Integer[5];
    for(int i=0;i<integers.length;i++){
        integers[i] = i;
    }

    for (Integer integer : integers) {
        System.out.println(integer);
    }
}

输出

0
1
2
3
4

对应代码的.class

@Test
public void test1() {
    Integer[] integers = new Integer[5];

    for(int i = 0; i < integers.length; ++i) {
        integers[i] = i;
    }

    Integer[] var6 = integers;
    int var3 = integers.length;

    for(int var4 = 0; var4 < var3; ++var4) {
        Integer integer = var6[var4];
        System.out.println(integer);
    }

}

集合的增强for

@Test
public void test1(){
    ArrayList<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(11);
    list.add(1111);
    list.add(11111);
    for (Integer integer : list) {
        System.out.println(integer);
    }
}

集合增强for的.class

@Test
public void test1() {
    ArrayList<Integer> list = new ArrayList();
    list.add(1);
    list.add(11);
    list.add(1111);
    list.add(11111);
    Iterator var2 = list.iterator();

    while(var2.hasNext()) {
        Integer integer = (Integer)var2.next();
        System.out.println(integer);
    }

}

结论:

集合的增强for底层使用迭代器

数组增强for的时候改变

@Test
public void test2(){
    Integer[] integers =   new Integer[5];
    for(int i=0;i<integers.length;i++){
        integers[i] = i;
    }

    for (Integer integer : integers) {
        if(integer==2){
            integer=2222222;
        }
    }
    for (Integer integer : integers) {
        System.out.println(integer);
    }
}

数组增强for改变时候的class

@Test
public void test2() {
    Integer[] integers = new Integer[5];

    for(int i = 0; i < integers.length; ++i) {
        integers[i] = i;
    }

    Integer[] var6 = integers;
    int var3 = integers.length;

    int var4;
    Integer integer;
    for(var4 = 0; var4 < var3; ++var4) {
        integer = var6[var4];
        if (integer == 2) {
            integer = 2222222;
        }
    }

    var6 = integers;
    var3 = integers.length;

    for(var4 = 0; var4 < var3; ++var4) {
        integer = var6[var4];
        System.out.println(integer);
    }

}

集合增强for的时候改变

@Test
public void test3(){
    ArrayList<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(11);
    list.add(111);
    list.add(1111);
    for (Integer integer : list) {
        if(integer==11){
            integer = 0;
        }
    }

    for (Integer integer : list) {
        System.out.println(integer);
    }
}

结果

1
11
111
1111

增强for改变的.class文件

@Test
public void test3() {
    ArrayList<Integer> list = new ArrayList();
    list.add(1);
    list.add(11);
    list.add(111);
    list.add(1111);
    Iterator var2 = list.iterator();

    Integer integer;
    while(var2.hasNext()) {
        integer = (Integer)var2.next();
        if (integer == 11) {
            integer = 0;
        }
    }

    var2 = list.iterator();

    while(var2.hasNext()) {
        integer = (Integer)var2.next();
        System.out.println(integer);
    }

}
posted @ 2022-12-06 13:55  传说中的旅行者  阅读(7)  评论(0编辑  收藏  举报