A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戴进飘 中级黑马   /  2012-10-1 22:18  /  1847 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 戴进飘 于 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 代表着什么。
谢谢!!


评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
args是数组,arg是临时变量,用来存储每次遍历到的数组元素

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 古银平 于 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);

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 翁鹏 于 2012-10-2 11:42 编辑

Java中的增强for循环底层我记得好像是利用了迭代器来实现的。
for( Iterator itr = args.iterator(); itr.hasNext() ;)
             arg = itr.next();
差不多是这样吧。              Java中的游长实参表是用数组实现的。  所以,int... args   底层就是个int数组。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
for(int arg : args)是遍历args数组中每一个int元素,并用   arg这个局部变量   来临时存储,以便于for循环后面大括号中对这个元素来进行操作。
由此可见arg 与args 。arg是一个局部变量。args是一个数组在栈内存中的引用

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
      for(int arg : args){
               sum += arg;
          }
     相当与:for(int x=0;x<args.length;x++)
                 {  
                           sum+=args[x];
                 }   
     那么args 是数组名,arg是临时存储变量,相当于上式中的agrs[x] 。                  

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
娇赛赛 发表于 2012-10-1 23:45
for(int arg : args){
               sum += arg;
          }

谢谢!明白了
回复 使用道具 举报
郭阳 发表于 2012-10-1 22:33
for(int arg : args)是遍历args数组中每一个int元素,并用   arg这个局部变量   来临时存储,以便于for循环 ...

谢谢!谢谢回复
回复 使用道具 举报
古银平 发表于 2012-10-1 22:26
public static int add(int x,int ... args) 这是一个形参可变的函数,int... args 代表是一个数组,根据你 ...

谢谢!明白了
回复 使用道具 举报
翁鹏 发表于 2012-10-1 22:29
Java中的增强for循环底层我记得好像是利用了迭代器来实现的。
for( Iterator itr = args.iterator(); itr.h ...

谢谢!!!
回复 使用道具 举报
种生祥 发表于 2012-10-1 22:22
args是数组,arg是临时变量,用来存储每次遍历到的数组元素

谢谢!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马