java数组编译后_Java中数组和集合的foreach操作编译后究竟是啥

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

今天和同事在关于foreach编译后是for循环还是迭代器有了不同意见,特做了个Demo,了解一下。

是啥自己来看吧!

public class Demo {

public static void main(String[] args) {

int[] ints = new int[5];

for (int s : ints) {

System.out.println(s);

}

String[] intss = new String[5];

for (String s : intss) {

System.out.println(s);

}

List strings = new ArrayList<>();

for (String s : strings) {

System.out.println(s);

}

Map map = new HashMap<>();

for (Map.Entry e: map.entrySet()) {

System.out.println(e.getKey());

}

}

}

编译后查看的源码:

public class Demo {

public Demo() {

}

public static void main(String[] args) {

int[] ints = new int[5];

int[] var2 = ints;

int var3 = ints.length;

int var4;

int s;

for(var4 = 0; var4 < var3; ++var4) {

s = var2[var4];

System.out.println(s);

}

String[] intss = new String[5];

String[] var8 = intss;

var4 = intss.length;

for(s = 0; s < var4; ++s) {

String s = var8[s];

System.out.println(s);

}

List strings = new ArrayList();

Iterator var10 = strings.iterator();

while(var10.hasNext()) {

String s = (String)var10.next();

System.out.println(s);

}

Map map = new HashMap();

Iterator var13 = map.entrySet().iterator();

while(var13.hasNext()) {

Entry e = (Entry)var13.next();

System.out.println(e.getKey());

}

}

}

总结:

foreach对于数组来说依旧是for循环,对List、Map集合来说是迭代器。

版权声明

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值