黑马程序员技术交流社区

标题: 一个很简单的函数问题,我就是想不明白 [打印本页]

作者: 马州州    时间: 2012-7-11 11:45
标题: 一个很简单的函数问题,我就是想不明白
本帖最后由 马州州 于 2012-7-11 19:36 编辑

public static void main(String[] args)
        {
        int[] arr={5,1,6,4,2,8,9};
        int max=getmax(arr);就是这句话,能不能详解一下
        System.out.println("max="+max);
        }


public static int getmax(int[] arr)
        {        
                int max = arr[0];
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }
        

这段代码上面那个int max=getmax(arr);的作用是什么,有些想不明白
作者: 徐然    时间: 2012-7-11 11:51
int max=getmax(arr);就是这句话,能不能详解一下
首先你调用了getmax(int[] arr)这个方法,
并把arr作为参数传入.这个方法的返回值是一个int型
然后你就用一个int型的max变量记录住了
getmax(arr)的返回结果
也可以这样说,将getmax(arr)的返回值赋值给int max;
作者: 孙新强    时间: 2012-7-11 11:57
int max=getmax(arr);调用了下面的方法:
public static int getmax(int[] arr)
        {        
                int max = arr[0];
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }
这个方法是静态的,可以直接调用,并且把返回值赋给了max。理解那一句话,主要就是理解getmax方法,这个方法里面,就是进行了一下遍历比较。
作者: 田向向    时间: 2012-7-11 12:09
int max=getmax(arr); 这是调用的getmax(int[] arr)方法,从而获取数组的最大值
作者: 刘源    时间: 2012-7-11 12:17
int max=getmax(arr)   
  public static int getmax(int[] arr)   
{return max;}
楼主不要被英文所迷惑,你就看这三句话就OK了。首先getMax()这个方法接受的是一个int 数组。所以你=右边是这么写getmax(arr)。而这个方法返回值的是max.他是一个int型局部变量。所以你=左边是这么写int max。而这个max是主函数的max.它和getmax方法中的max不是一个东西,你要不信你把他们改分别改成max1和max2,这个程序是一样的。

作者: 。_Smileヾ淡莣    时间: 2012-7-11 12:49
public static int getmax(int[] arr)
        {        
                int max = arr[0];
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }

int max=getmax(arr)
你调用了getmax(int[] arr)这个方法, 并把arr作为参数传入.这个方法的返回值类型为int类型;
在把max作为一个变量传入;只要获取这个max变量就可以获取这个最大值了
作者: 高原    时间: 2012-7-11 12:55
public static void main(String[] args)
        {
        int[] arr={5,1,6,4,2,8,9};
        int max=getmax(arr);        //将 int[] 类型数组 arr 的地址传给getmax()中的那个 int[] 类型的arr 数组,二者指向同一块内存,看我下面的图
        System.out.println("max="+max);    这个max也是局部变量,只是用来保存函数返回值的,和getmax函数中的max没有关系
        }


public static int getmax(int[] arr)      这个函数需要的参数是 int[] 类型的,作用是取得数组中的最大值,并返回
        {        
                int max = arr[0];         这里的max是局部变量,只是用来保存数组中元素的最大值的
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }

内存图:



捕获.PNG (23.6 KB, 下载次数: 36)

捕获.PNG

作者: 范泰洋    时间: 2012-7-11 13:47
public static void main(String[] args)
        {
        int[] arr={5,1,6,4,2,8,9};
        int max=getmax(arr);就是这句话,能不能详解一下
        System.out.println("max="+max);
        }


public static int getmax(int[] arr)
        {        
                int max = arr[0];
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }
getmax(arr)这里就是相当于把arr作为参数传入进来,参与比较运算
因为getmax方法返回的结果是int型常量。
那么就需要定义一个int型变量,并把getmax()方法中返回的结果赋值给int max量才能进行打印。
作者: 刘笑    时间: 2012-7-11 15:08
我就不说了
作者: 韩伟    时间: 2012-7-11 16:06
int max=getmax(arr);
该语句是调用了方法getmax(),并传递了一个int型数组参数,
方法执行完之后返回一个int型的值,并且把这个返回的值负给了变量max。
作者: 京鱼龙    时间: 2012-7-11 18:47
public static void main(String[] args)
        {
        int[] arr={5,1,6,4,2,8,9};
        int max=getmax(arr);就是这句话,能不能详解一下
        System.out.println("max="+max);
        }


public static int getmax(int[] arr)
        {        
                int max = arr[0];
                for (int x=1;x<arr.length ;x++ )
                {
                        if (arr[x]>max)
                                max = arr[x];
                }
                return max;
        }
        我的理解是第一是调用了下面的public函数,假如下面那句public static int getmax(int[] arr)
没有getmax的话,上面的那句就没用了,或者无法调用,因为找不到被调用的函数。第二是把public static int getmax(int[] arr)那一段给封装起来,
然后给getmax,这样就不用改下面的那段代码了,直接改getmax就行了。

作者: 杨康    时间: 2012-7-11 19:13
int max=getmax(arr);就是这句话,能不能详解一下
因为你调用的是getmax()方法,该方法的返回值类型是int型,所以你又定义了一个变量max 来记住该方法返回的值,仅此而已。
作者: 黑马高明辉    时间: 2012-7-11 19:19
调用方法,返回值给max。
作者: 马州州    时间: 2012-7-11 19:33
高原 发表于 2012-7-11 12:55
public static void main(String[] args)
        {
        int[] arr={5,1,6,4,2,8,9};

辛苦了,谢谢哈,看你的看明白了
作者: 马州州    时间: 2012-7-11 19:33
谢谢大家,问题明白了
作者: 马州州    时间: 2012-7-11 19:36
刘源 发表于 2012-7-11 12:17
int max=getmax(arr)   
  public static int getmax(int[] arr)   
{return max;}

你说的我也看明白了




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