我尽量以最通俗的语言讲解。
1.foreach是java的一个语法糖,就是让你解放双手少做无用功;
2.foreach的作用,举个简单的例子:(省略类及main方法)
int arr[]=new arr[5];
for(int i=0; i<5; ++i){
System.out.println(arr[i]);
}
这里的for循环等价于:
for(int x: arr){
System.out.println(x) ;
}
这里用x对arr[]里面的元素进行逐个“遍历”,每次循环都会生成一个新的a,用于储存每一个唯一与之建立对应关系的arr[i](某个具体的值);对于所谓的二维数组,高中我们都学过集合——二维数组就相当于是把数组作为元素的集合,比如:{{1, 2}, {3, 4, 5}},如此而已!
你的这个例子里,二维数组可以一次就遍历完毕么?不行!不行怎搞?那就遍历两次啊!外层循环遍历的对象是整个二维数组——当然不是真的能把这个二维数组彻头彻尾的遍历干净了,但是至少可以获得一些信息——我们可以从外层训环得出关于“行”的信息。还是集合,方便理解:定义集合{{1, 2}, {3, 4, 5}}(数组也一样,换汤不换药!)你可以把{1, 2}, {3, 4}视为两个元素,这样我们得到什么信息?注意现在这是两个最小的元素,你对里面的情况一无所知,所以你不知道{1, 2}, {3, 4, 5}这两个集合元素里面的下一层元素是什么——现在,你得到的信息是:
集合{{1, 2}, {3, 4}}里共有两个元素
你说,我还想知道所谓的集合元素里面到底有什么?怎么办,那就再循环遍历一次咯!
对于集合{1, 2}和集合{3, 4, 5}遍历的结果是:
集合{1, 2}里共有2个元素; 集合{3, 4, 5}里共有3个元素
至此,我们对于这个由集合构成的集合的所有信息都已经掌握了:
集合{{1, 2}, {3, 4}}里共有两个元素;集合{1, 2}里共有2个元素; 集合{3, 4, 5}里共有3个元素
对于遍历数组,其实和“遍历”(允许我用这个词吧)集合差不多,嗯。
顺便一提,一个你可能有的疑惑:“为什么”在外层循环时遍历元素是double row[](数组)而内层循环则是double b ,后面接数组名——因为外层遍历的是二维数组——虽然我们把它“看成”是一维的(就好像我们不知道{1, 2}里面有什么,一个道理),但是计算机不是你肚子里的蛔虫,人家看到的还是二维数组啊!二维数组的元素是什么?是一维数组!那不就得了。