foreach原理

目录

一、foreach的作用

二、foreach实现原理


一、foreach的作用

遍历容器或者数组中的元素。从学C语言开始,我们知道可以用循环获取容器中的所有元素,后来接触Java,知道还可以用迭代器获取容器中的所有元素,foreach也是一种遍历容器所有元素的方法。

那么foreach是怎么实现的呢?

二、foreach实现原理

看一个简单的例子:

public static void main(String[] args) {
	String[] ss = {"1", "2", "3"};
		
	List<String> list = new ArrayList<>(Arrays.asList(ss));
	for (String s : list) {
		System.out.println(s);
	}
		
	list.clear();
	List<Apple> list1 = new ArrayList<>();
	list1.add(new Apple());
	list1.add(new Apple());
	list1.add(new Apple());
	for (Apple apple : list1) {
		System.out.println(apple);
	}
}

反编译后:

public static void main(String[] paramArrayOfString) {
        String[] arrayOfString = { "1", "2", "3" };

        ArrayList localArrayList = new ArrayList(Arrays.asList(arrayOfString));
        for (Object localObject1 = localArrayList.iterator(); 
                                  ((Iterator)localObject1).hasNext(); ) { 
            localObject2 = (String)((Iterator)localObject1).next();
            System.out.println((String)localObject2);
        }

        localArrayList.clear();
        localObject1 = new ArrayList();
        ((List)localObject1).add(new Apple());
        ((List)localObject1).add(new Apple());
        ((List)localObject1).add(new Apple());

        for (Object localObject2 = ((List)localObject1).iterator(); 
                                  ((Iterator)localObject2).hasNext(); ) { 
            Apple localApple = (Apple)((Iterator)localObject2).next();
            System.out.println(localApple);
        }
}

从反编译的代码中可以看到,foreach被编译成了通过迭代器方式实现的循环遍历。也就是说foreach语法实际上是通过迭代器实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值