黑马程序员技术交流社区

标题: for循环增强语句 [打印本页]

作者: 戴进飘    时间: 2012-10-1 22:18
标题: for循环增强语句
本帖最后由 戴进飘 于 2012-10-2 10:44 编辑

    public static int add(int x,int ... args){
          int sum = x;
          for(int arg : args){
               sum += arg;
          }
          return sum;
     }


那位可以帮我解释一下for(int arg : args)这句在计算机中是怎么运行的。arg 与args 代表着什么。
谢谢!!



作者: 种生祥    时间: 2012-10-1 22:22
args是数组,arg是临时变量,用来存储每次遍历到的数组元素
作者: 古银平    时间: 2012-10-1 22:26
本帖最后由 古银平 于 2012-10-1 22:35 编辑

public static int add(int x,int ... args) 这是一个形参可变的函数,int... args 代表是一个数组,根据你传递的参数确定数组的长度,
arg只不过是一个标记,记录遍历args数组中的元素。
public static int add(int x,int ... args)这个和这个是等价的public static int add(int x,int[] args);
作者: 翁鹏    时间: 2012-10-1 22:29
本帖最后由 翁鹏 于 2012-10-2 11:42 编辑

Java中的增强for循环底层我记得好像是利用了迭代器来实现的。
for( Iterator itr = args.iterator(); itr.hasNext() ;)
             arg = itr.next();
差不多是这样吧。              Java中的游长实参表是用数组实现的。  所以,int... args   底层就是个int数组。
作者: 郭阳    时间: 2012-10-1 22:33
for(int arg : args)是遍历args数组中每一个int元素,并用   arg这个局部变量   来临时存储,以便于for循环后面大括号中对这个元素来进行操作。
由此可见arg 与args 。arg是一个局部变量。args是一个数组在栈内存中的引用
作者: 徐-星星    时间: 2012-10-1 23:45
      for(int arg : args){
               sum += arg;
          }
     相当与:for(int x=0;x<args.length;x++)
                 {  
                           sum+=args[x];
                 }   
     那么args 是数组名,arg是临时存储变量,相当于上式中的agrs[x] 。                  
作者: 戴进飘    时间: 2012-10-2 10:46
娇赛赛 发表于 2012-10-1 23:45
for(int arg : args){
               sum += arg;
          }

谢谢!明白了
作者: 戴进飘    时间: 2012-10-2 10:47
郭阳 发表于 2012-10-1 22:33
for(int arg : args)是遍历args数组中每一个int元素,并用   arg这个局部变量   来临时存储,以便于for循环 ...

谢谢!谢谢回复
作者: 戴进飘    时间: 2012-10-2 10:47
古银平 发表于 2012-10-1 22:26
public static int add(int x,int ... args) 这是一个形参可变的函数,int... args 代表是一个数组,根据你 ...

谢谢!明白了
作者: 戴进飘    时间: 2012-10-2 10:48
翁鹏 发表于 2012-10-1 22:29
Java中的增强for循环底层我记得好像是利用了迭代器来实现的。
for( Iterator itr = args.iterator(); itr.h ...

谢谢!!!
作者: 戴进飘    时间: 2012-10-2 10:49
种生祥 发表于 2012-10-1 22:22
args是数组,arg是临时变量,用来存储每次遍历到的数组元素

谢谢!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2