A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fxing 中级黑马   /  2015-2-27 11:45  /  997 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。
请问:工具类中的函数都是静态的例如
    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];

可是这个函数需要传入数组啊,既然访问数组这个对象,怎么还能定义成静态的呢?

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
这个数组是传入的数组,你在函数上已经定义了这个数组了 public statci int getMax(int[] arr ),在这个函数内用的是你自己定义的数组了,这个是这个函数内的局部变量了,而没有用到外部的内容
回复 使用道具 举报
这个是参数,
回复 使用道具 举报
将数组作为参数传递给方法,这个数组是方法内的局部变量
回复 使用道具 举报
数组是以参数的形式表示的,只有在方法被调用时才能明确数组。既然是作为参数,那么就是说这个数组已经是该发方法的一部分了。
回复 使用道具 举报
首先你要明白没有访问非静态数据的含义,这里访问是函数的内部直接调用到外部参数,而不是指传入的数组参数,当函数内部调用已经定义好的变量或者数组时,这才是访问了非静态变量,传入的只能算作参数。
针对你说的我写了两个函数演示一下。
  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修饰。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马