黑马程序员技术交流社区
标题:
JDK1.5新特性:可变参数视频疑惑
[打印本页]
作者:
樊其杰
时间:
2013-3-22 23:35
标题:
JDK1.5新特性:可变参数视频疑惑
public class VrableParameter {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2, 3));
}
public static int add(int x,int ... args){
int sum=x;
for(int i=0;i<args.length;i++)
sum+=args[i];
return sum;
}
}
复制代码
刚开始张老师打的是sum=0;后来一个同学说错了,又改成sum=x;哪里错了?我怎么觉得是sum=0对的?
作者:
谷文仁
时间:
2013-3-22 23:39
可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
作者:
马利
时间:
2013-3-22 23:46
的确是开始的sum=0写错了
首先你看一下add函数的目的是什么?是把所有传进的参数相加求和的对不对。
而第一个型参不就是x吗,是零就错了
作者:
全超
时间:
2013-3-22 23:58
楼上说的一点不错,举个例子调用方法输入两个参数10和0:add(10,0)。如果sum=0那结果是0+0=0了;所以sum的值要是第一个形参传进来的值
作者:
马利
时间:
2013-3-23 00:02
不管是什么具体值,是什么都是传给型参,用的着去关心具体值是什么吗?关心的话也是谁调用这个函数谁去给型参赋值,赋什么值就随便了
作者:
VOIDMAIN
时间:
2013-3-23 15:02
我发现public static int add(int x,int ... args)这种写法不合理,按这种写法,args[0]会是数组的第二个数,那么这样要有正确结果,就必须让sum=x;如果写成public static int add(int x,int y,int ... args),那这时候args[0]会从数组的第三位开始取,那么sum的初始值就必须是sum=x+y;我认为最合理的写法应该是public static int add(int ... args);这样可以让sum=0;这样更符合可变参数的方便性。
作者:
张昶
时间:
2013-3-23 16:00
支持楼上的说法,举得例子也好!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2