黑马程序员技术交流社区
标题:
静态问题
[打印本页]
作者:
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
首先你要明白没有访问非静态数据的含义,这里访问是函数的内部直接调用到外部参数,而不是指传入的数组参数,当函数内部调用已经定义好的变量或者数组时,这才是访问了非静态变量,传入的只能算作参数。
针对你说的我写了两个函数演示一下。
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修饰。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2