首先你要明白没有访问非静态数据的含义,这里访问是函数的内部直接调用到外部参数,而不是指传入的数组参数,当函数内部调用已经定义好的变量或者数组时,这才是访问了非静态变量,传入的只能算作参数。
针对你说的我写了两个函数演示一下。
- class Demo
- {
- public static void main(String[] args)
- {
- int[] arr = {2,34,7,4,1};
- Tools.getMax(arr);
- }
- }
- class Tools
- {
- private int[] newarr = {2,3,5,7,8};
-
- 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];
- }
-
- public int getMin()//这里如果加上static就是错误了,因为是调用了定义好的newarr数组,访问量非静态数组
- {
- int min=0;
- for(int x=1; x<newarr.length; x++)
- {
- if(newarr[x]<newarr[min])
- min=x;
- }
- return newarr[min];
- }
- }
复制代码
主函数中直接调用了getMax方法,这里是将arr数组直接传入而非调用,在getMin方法中则是调用了定义好的newarr数组,访问量非静态数组,所以不能用static修饰。 |