本帖最后由 smileven 于 2013-12-23 02:25 编辑
主函数中args是一个引用,指向从代码开始处的第一个变量。
add()函数有两个参数,一个x,一个是args数组。
当第一次add(2,3)的时候,2的值是赋给x的,而强制的将args的引用值从代码开始出指向了参数3。所以rgs.length当然也就是1了。
第二次add(2,3,5)的时候,2的值依旧赋给x,强制将args的引用值指向了数组{[3][5]}的开始处。所以args.length当然也就是2了。
在求sum的时候操作里面只是相加了args数组中的值,并没有加参数x的值,所以值是不对的。
可以把代码改成这样的:- public class AvariableParameter {
- public static void main(String[] args) {
- System.out.println(add(2, 3));
- System.out.println(add(2, 3, 5));
- System.out.println(add(2, 3, 6, 7));
- }
- public static int add(int ... args){
- int sum = 0 ;
- for (int i = 0; i < args.length; i++) {
- sum += args[i];
- }
- return sum ;
- }
- }
复制代码 或者改成这样的:
- public class AvariableParameter {
- public static void main(String[] args) {
- System.out.println(add(2, 3));
- System.out.println(add(2, 3, 5));
- System.out.println(add(2, 3, 6, 7));
- }
- public static int add(int x , int ... args){
- int sum = 0 ;
- for (int i = 0; i < args.length; i++) {
- sum += args[i];
- }
- return sum + x ;
- }
- }
复制代码
|