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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DOOR 中级黑马   /  2014-1-7 01:23  /  853 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 DOOR 于 2014-1-16 00:38 编辑
  1. public class VariableParameter {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 System.out.println(add(2,3));
  8.                 System.out.println(add(2,3,5));  

  9.         
  10.         }
  11.         
  12.         public static int add(int x,int ... args){
  13.                 int sum = x;
  14.                 for(int i=0;i<args.length;i++){
  15.                         
  16.                         sum += args[i];                          
  17.                 }
  18.                 return sum;
  19.         }

  20. }
复制代码
打印结果为5和10,想不通,求解

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

6 个回复

倒序浏览
你add方法的意思是返回所有int参数之和。
可变参数传过来就相当于是一个int数组。
add(2,3,5)这个在add方法里,args[0]就是3,args[1]就是5

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
你的变参数相当于传入了新的数组,再求int数组的和
回复 使用道具 举报
add(2,3,5)就那这个为例吧!add(int x,int ... args)这个函数中,将2传递给力x,由于后面的int ... args为可变参数,在java中,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数。所以也就相当于args这个数组中存储有3和5这两个元素。再利用函数内部的求和运算,sum的初始值赋值为2,再加上数组中元素的和,也就是整个add方法中的参数的和,即10.其他的也类似。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
你的add方法第一个参数是加数 后面的几个参数是可变参数 由编译器自动把他们按顺序添加到args数组内  通过for循环让他们相加  
                System.out.println(add(2,3)); 结果是2+args[0] 也就是2+3=5
                System.out.println(add(2,3,5)); 结果是2+args[0]+args[1]也就是2+3+5=10

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
你这个方法就是求和的,2+3不等于5?,2+3+5不等于10?当然是打印这两个结果............怎么会想不通...
回复 使用道具 举报
本帖最后由 渐渐不懂了 于 2014-1-9 15:15 编辑

可变参数的特点:
1、只能出现在参数列表的最后;
2、...位于变量类型和变量名之间,前后有无空格都可以;
3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
知道了可变参数特点你就知道上面的答案了吧!!希望能帮到你哦

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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