黑马程序员技术交流社区
标题: 关于可变参数 [打印本页]
作者: DOOR 时间: 2014-1-7 01:23
标题: 关于可变参数
本帖最后由 DOOR 于 2014-1-16 00:38 编辑
- public class VariableParameter {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- System.out.println(add(2,3));
- System.out.println(add(2,3,5));
-
-
- }
-
- public static int add(int x,int ... args){
- int sum = x;
- for(int i=0;i<args.length;i++){
-
- sum += args[i];
- }
- return sum;
- }
- }
复制代码 打印结果为5和10,想不通,求解
作者: 浮出一个美 时间: 2014-1-7 06:51
你add方法的意思是返回所有int参数之和。
可变参数传过来就相当于是一个int数组。
add(2,3,5)这个在add方法里,args[0]就是3,args[1]就是5
作者: 净坛使者 时间: 2014-1-7 07:45
你的变参数相当于传入了新的数组,再求int数组的和
作者: 松毛 时间: 2014-1-7 08:22
add(2,3,5)就那这个为例吧!add(int x,int ... args)这个函数中,将2传递给力x,由于后面的int ... args为可变参数,在java中,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数。所以也就相当于args这个数组中存储有3和5这两个元素。再利用函数内部的求和运算,sum的初始值赋值为2,再加上数组中元素的和,也就是整个add方法中的参数的和,即10.其他的也类似。
作者: 周志彬 时间: 2014-1-7 08:38
你的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
作者: 零敢 时间: 2014-1-7 16:53
你这个方法就是求和的,2+3不等于5?,2+3+5不等于10?当然是打印这两个结果............怎么会想不通...
作者: 渐渐不懂了 时间: 2014-1-9 15:13
本帖最后由 渐渐不懂了 于 2014-1-9 15:15 编辑
可变参数的特点:1、只能出现在参数列表的最后;
2、...位于变量类型和变量名之间,前后有无空格都可以;
3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
知道了可变参数特点你就知道上面的答案了吧!!希望能帮到你哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |