foreach 得到的结果是错的?那你肯定忽略了这个

首先来介绍下foreach用法。

**for(元素类型 元素变量x:遍历对象(数组或集合)){

        引用元素变量x的语句;
        
 }**

从语法结构上看,其实并不难理解。但初学者很有可能会踩雷哦!别的先不说,先来看下面例子:

普通for:

package test;


public class test {
public static void main(String[] args){
	int[] array1 = {1,2,3,4};
	int[] array2 = new int[6];
	System.arraycopy(array1, 0, array2, 0, 4);
	
	for(int i = 0;i<array2.length;i++){
		System.out.println(array2[i]);
	}
}
}
	

得到的结果如下:
在这里插入图片描述
增强for (雷区)

package test;


public class test {
public static void main(String[] args){
	int[] array1 = {1,2,3,4};
	int[] array2 = new int[6];
	System.arraycopy(array1, 0, array2, 0, 4);
	for (int i : array2) {
		System.out.println(array2[i]);
	}  
}
}
	

结果如下:
在这里插入图片描述

咦? 怎么结果不一样呢?细心检查就会发现,输出时语法出错了
错误

System.out.println(array2[i]);

正确

System.out.println(i);

虽然这是个语法错误,改正就行。但我们要思考,为什么结果会是这样?

其实这就类似于套娃了。正确的语法,遍历后 1 2 3 4 0 0 。而错误的语法就是在这个基础上进行了一次“套娃”。过程如下:
array2[1] → 2
array2[2] → 3
array2[3] → 4
array2[4] → 0
array2[0] → 1
array2[0] → 1

看到这里,相信你已经顿悟了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值