黑马程序员技术交流社区

标题: 请问高新技术里这个代码是怎么运算的 [打印本页]

作者: 我叫MT    时间: 2014-2-13 23:50
标题: 请问高新技术里这个代码是怎么运算的
本帖最后由 我叫MT 于 2014-2-14 13:14 编辑
  1. class Noname1
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println(add(2,3));
  6. System.out.println(add(2,3,5));
  7. }
  8. public static int add(int x,int ... args)
  9. {
  10. int num = x;
  11. for(int i=0;i<args.length;i++)
  12. {
  13. num += args[i];
  14. }
  15. return num;
  16. }
  17. }
复制代码

结果是5和10,怎么算出来的?
主要是num在初始化时值是什么?

作者: 630681386@qq.co    时间: 2014-2-13 23:58
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数
作者: 我叫MT    时间: 2014-2-14 00:08
630681386@qq.co 发表于 2014-2-13 23:58
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数 ...


当第一次运行到args也就是运行到args[0]时这个args[0]是多少
作者: 我叫MT    时间: 2014-2-14 00:13
630681386@qq.co 发表于 2014-2-13 23:58
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数 ...

我觉得是不是从int x 后面的值开始的?也就是int...args这?
作者: 630681386@qq.co    时间: 2014-2-14 00:21
  1. public static void main(String[] args)
  2. {
  3. System.out.println(add(2,3));
  4. System.out.println(add(2,3,5));
  5. }
  6. public static int add(int x,int ... args)
  7. {
  8. int num = x;
  9. for(int i=0;i<args.length;i++)
  10. {
  11.         System.out.println(args[i]);这里加一句代码验证一下就好
  12. num += args[i];
  13. }
  14. return num;
  15. }
  16. }
复制代码


循环里加句输出的代码,你分析一下,事实证明是从后面开始的
作者: 榨菜    时间: 2014-2-14 01:48
初始化的时候num就是等于x  2.   你可以把可变参数看成一个int[] 数组类型  
作者: 为爱算了吧    时间: 2014-6-11 22:07
基石啥地方哈是否健康




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