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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我叫MT 中级黑马   /  2014-2-13 23:50  /  1977 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 我叫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在初始化时值是什么?

6 个回复

正序浏览
基石啥地方哈是否健康
回复 使用道具 举报
初始化的时候num就是等于x  2.   你可以把可变参数看成一个int[] 数组类型  
回复 使用道具 举报
  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. }
复制代码


循环里加句输出的代码,你分析一下,事实证明是从后面开始的
回复 使用道具 举报
630681386@qq.co 发表于 2014-2-13 23:58
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数 ...

我觉得是不是从int x 后面的值开始的?也就是int...args这?
回复 使用道具 举报
630681386@qq.co 发表于 2014-2-13 23:58
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数 ...


当第一次运行到args也就是运行到args[0]时这个args[0]是多少
回复 使用道具 举报
初始化的时候就赋值了2,是通过方法传值传过来的,后面传了一个数组,这就是jdk1.5的可变参数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马