黑马程序员技术交流社区

标题: 求大神解答这个数组函数调用问题。 [打印本页]

作者: 小周务商    时间: 2014-2-25 23:47
标题: 求大神解答这个数组函数调用问题。
//定义一个函数,接收一个int类型的数组,计算该数组元素为偶数的总和。class  Test6{
        public static void main(String[] args)
        {
                int[] arr={2,3,5,6,8,12,66};//数组初始化。
                int num = he(arr);//调用下面函数:he
                System.out.println("偶数总和为:"+num);
        }
        public static int he(int[] arr2)//这个数组是调用上面数组的数组吗?
        {
                int num =0;//定义一个变量存储每次偶数相加的和。
                for (int i=0;i<arr2.length ;i++ )
                {
                        if (arr2[i]%2==0)//判断是否为偶数。
                        {
                                num = num+arr2[i];
                        }
                }
                return num;//返回总和。
        }
}
有一点我不太明白的就是public static int he(int[] arr2)

arr2是调用上面arr里面的数据来遍历的吗。如果不是。他哪来的数据执行?
int num = he(arr);
这一行的(arr).也是调用上面的arr的数据吗。
求大神解答一下这个程序的执行流程。就这两个地方不太明白。

作者: luoanjade    时间: 2014-2-25 23:54
本帖最后由 luoanjade 于 2014-2-26 00:07 编辑

小生来给你解答:       上面这个类里面定义了一个int类型的he(int[] arr)静态方法,该方法,返回的值是int类型的,也就是数组中偶数的总和。
       首先,public static int he(int[] arr){},括号里面的arr只是一个形式参数,你可以写任何一个非关键字的标识。
这个方法表示,它将接受并处理任何一个int类型的数组,并返回一个int类型的结果。
       所以,楼主发的程序中: int[] arr={2,3,5,6,8,12,66};//数组初始化。
                                              int num = he(arr);//调用下面函数:he
                 这两行:第一行,定义了一个int类型的数组arr,并已经初始化;
                               第二行,将上面定义的数组,传给he(int[])方法处理。这时候he(int[])方法就有了实参arr
       这会知道,he(arr)的数据从哪来了吧?

作者: 位俊鹏    时间: 2014-2-26 00:10
回答问题一:arr2是原来定义的那个数组,只不过不用写成int[]arr2的形式,传入int[]arr就行了.
问题二:     
作者: 位俊鹏    时间: 2014-2-26 00:12
回答问题一:arr2是原来定义的那个数组,只不过不用写成int[]arr2的形式,传入int[]arr就行了.
      问题二: int num = he(arr);也是上面定义的那个数组.  因为方法的参数列表是一个数组,所以把要操作的数组                       传入即可.
作者: 小周务商    时间: 2014-2-26 00:13
public static int he(int[] arr){},括号里面的arr只是一个形式参数,你可以写任何一个非关键字的标识。
这个方法表示,它将接受并处理任何一个int类型的数组,并返回一个int类型的结果。

那如果我有两个数组在上面呢。他该接受哪一个数组?
作者: 平凡成就非凡    时间: 2014-2-26 00:20
int num=he(arr); 其中arr就是你传进去的,传那个调用那个啊
作者: chenfc8578    时间: 2014-2-26 00:28
public static int he(int[] arr2)就是在使用上面的数组,因为数组是引用类型的,当执行int num = he(arr);时,就把上面的数组的引用传递给方法中的arr2,因为它们都是int[]类型的。就相当于给上面的数组起了一个名字arr2,但还是你定义的那个数组。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2