黑马程序员技术交流社区

标题: 静态问题 [打印本页]

作者: fxing    时间: 2015-2-27 11:45
标题: 静态问题
        当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。
请问:工具类中的函数都是静态的例如
    public static int getMax(int[] arr)
        {
                int max=0;
                for(int x=1; x<arr.length; x++)
                {
                        if(arr[x]>arr[max])
                                max=x;
                }
                return arr[max];

可是这个函数需要传入数组啊,既然访问数组这个对象,怎么还能定义成静态的呢?
作者: 枪杆不如笔杆    时间: 2015-2-27 12:07
这个数组是传入的数组,你在函数上已经定义了这个数组了 public statci int getMax(int[] arr ),在这个函数内用的是你自己定义的数组了,这个是这个函数内的局部变量了,而没有用到外部的内容
作者: 邓士林    时间: 2015-2-27 12:42
这个是参数,
作者: ㏒假™面具    时间: 2015-2-27 23:28
将数组作为参数传递给方法,这个数组是方法内的局部变量
作者: lwj123    时间: 2015-2-27 23:38
数组是以参数的形式表示的,只有在方法被调用时才能明确数组。既然是作为参数,那么就是说这个数组已经是该发方法的一部分了。
作者: 奋斗小青年    时间: 2015-2-28 11:21
首先你要明白没有访问非静态数据的含义,这里访问是函数的内部直接调用到外部参数,而不是指传入的数组参数,当函数内部调用已经定义好的变量或者数组时,这才是访问了非静态变量,传入的只能算作参数。
针对你说的我写了两个函数演示一下。
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = {2,34,7,4,1};
  6.                 Tools.getMax(arr);
  7.         }
  8. }

  9. class Tools
  10. {
  11.         private int[] newarr = {2,3,5,7,8};
  12.        
  13.         public static int getMax(int[] arr)
  14.     {
  15.             int max=0;
  16.             for(int x=1; x<arr.length; x++)
  17.             {
  18.                     if(arr[x]>arr[max])
  19.                             max=x;
  20.             }
  21.             return arr[max];
  22.     }
  23.        
  24.         public  int getMin()//这里如果加上static就是错误了,因为是调用了定义好的newarr数组,访问量非静态数组
  25.     {
  26.             int min=0;
  27.             for(int x=1; x<newarr.length; x++)
  28.             {
  29.                     if(newarr[x]<newarr[min])
  30.                             min=x;
  31.             }
  32.             return newarr[min];
  33.     }
  34. }
复制代码

主函数中直接调用了getMax方法,这里是将arr数组直接传入而非调用,在getMin方法中则是调用了定义好的newarr数组,访问量非静态数组,所以不能用static修饰。




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