Foreach实现原理

Foreach实现原理


前言

已知集合和数组都可以使用foreach方式进行循环遍历,官网介绍说,“实现了Iterable接口的类,都可以使用foreach”。(在jdk5版本引入的)

下面直接以示例说明。

一、Foreach原理

示例源码:

import java.util.ArrayList;
public class Test4 {    
	public static void main(String[] args) {        
		ArrayList<String> strings = new ArrayList<>();        
		for (String i : strings) {           
 			System.out.println(i);      
   		}      
   		 
   		int[] ints = {1, 2, 3};     
       	for (int i : ints) {      
           System.out.println(i);    
        }   
     }
 }

以上是最常见的写法,表面看起来,也简单易懂,但就不明白,怎么就实现了遍历了。后来查了相关资料才发现,是java虚拟机搞的鬼,于是本人便查看了编译后的class文件,源码如下:

import java.util.ArrayList;
import java.util.Iterator;
public class Test4 {
    public Test4() {
    }    
    public static void main(String[] args) { 
       ArrayList<String> strings = new ArrayList();        
       Iterator var2 = strings.iterator();
       while(var2.hasNext()) {            
          String i = (String)var2.next();  
          System.out.println(i);    
       }        
       int[] ints = new int[]{1, 2, 3}; 
       int[] var8 = ints; 
       int var4 = ints.length; 
       for(int var5 = 0; var5 < var4; ++var5) {     
            int i = var8[var5];          
            System.out.println(i);    
       }    
  }
}

一目了然。

那么谁的效率高呢?不想说太多,打字累,你们想吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值