本帖最后由 杨贺阳 于 2012-7-17 13:33 编辑
关于foreach语句,我在论坛里搜了一下帖子,感觉没有解决我的疑惑,所以发帖求助~
请看下面这个例子。
我知道foreach语句是遍历数组的元素的,但是我不理解这个遍历二维数组的for嵌套,无法理解我就记不住。
疑问一、第一个for里面为什么是 int x[] 而不是int x ,别跟我说因为把 int x[]看成是元素变量,如果是这样,那怎么把 int x[]看成是元素变量,能不能讲讲计算机运行这个语句的时候,
内部如何一步一步的执行的。
疑问二、 第二个for中if语句有一句e==x.length ,按照教材上的注释,这句是表示判断e是否是数组的最后一个变量,
x.length不是数组的长度的具体数值吗?把e的值和数组长度的值比较,会得出e是数组最后一个变量的结论吗?
如果这句if 语句的运行,跟第二个for有关联,运行受for的影响,那么这个if (e==x.length )怎么就判断e是否是数组最后一个变量了。
我是思考是e是什么,是元素变量,二维数组的,那么e和x.length比较,好像就没有意义,除非e是一个元素变量标号,而这个标号还是从1开始的,跟数组不同!
是这样吗?这只是我的推论猜想,有没有知道真相的大神啊!?
三、麻烦大家了,还希望能详细讲讲,尤其是想大神帮我梳理一下计算机内部如何运行foreach语句,很迷惑~
大家有人说要帖出代码,复制粘贴代码如下,不过不知道为什么代码的空格没有了,显得没有结构
class Demo
{
public static void main(String[] args)
{
int arr[][]={{8,32},{211,27}};
for(int x[]:arr)
{
for(int e:x)
{
if(e==x.length){System.out.println(e);}
else System.out.println(e+"、");
}
}
}
}
|