Java基礎--forEach實現原理
阿新 • • 發佈:2018-12-11
- 針對list的forEach
// 原始碼 import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("小白"); list.add("小黃"); list.add("小綠"); for(String str : list){ System.out.print(str); } } }
// 反編譯後的程式碼(因為使用的是網站提供的反編譯功能,亂碼問題請假裝看不見~) import java.util.ArrayList; import java.util.Iterator; public class ListTest { public static void main(String[] var0) { ArrayList var1 = new ArrayList(); var1.add("鐏忓繒婭�"); var1.add("鐏忓繘綺�"); var1.add("鐏忓繒璞�"); // 可以看到,forEach被編譯成了迭代器訪問 Iterator var2 = var1.iterator(); while(var2.hasNext()) { String var3 = (String)var2.next(); System.out.print(var3); } } }
- 針對陣列的forEach
// 原始碼
public class ArrayTest {
public static void main(String[] args) {
String[] array = {"小白", "小黃", "小綠"};
for(String str : array){
System.out.print(str);
}
}
}
// 反編譯後的程式碼 public class ArrayTest { public static void main(String[] var0) { String[] var1 = new String[]{"鐏忓繒婭�", "鐏忓繘綺�", "鐏忓繒璞�"}; String[] var2 = var1;// copy一份,然後for迴圈 int var3 = var1.length; for(int var4 = 0; var4 < var3; ++var4) { String var5 = var2[var4]; System.out.print(var5); } } }