java ,为什么无法从静态上下文中引用非静态方法

public class TextLinearSearch{
int[] list={1,4,2,5,-3,6,2};
public static void main(String args[]){
linearSearch(list,-3);
}
private void linearSearch(int[] list,int key){
for(int i=0;i<list.length;i++){
if(key==list[i])
System.out.println(i);
}
System.out.println("There is no right number in the list");
}
}

因为编译器不知道那个方法在哪,两种解决办法,一种加static修饰,这样在程序运行时就会被加载入内存,另一种创建对象,然后调用对象的方法,如
public static void main(String args[]){
TextLinerSearch t = new TextLinerSearch ();
t.linearSearch(list,-3);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-07
静态方法随着类的加载而加载 然后存到内存的功用方法区, 非静态的方法是要先实例化后才生成的.所以linearSearch(list,-3);就会出错追问

可以要你的qq吗?以后不懂的问题可以向你请教

第2个回答  2012-06-07
你把这个方法也改为静态的。
private static void linearSearch(int[] list,int key){
for(int i=0;i<list.length;i++){
if(key==list[i])
System.out.println(i);
}
System.out.println("There is no right number in the list");
}
第3个回答  2012-06-07
在int前面加上static就行了。
第4个回答  2020-06-09
由于tostring()方法是非静态的,故不能直接通过类名引用,上面的这句代码:
system.out.println(course.tostring());
改为
system.out.println(cs.tostring());
即可。
有问题欢迎提问,满意请采纳,谢谢!
相似回答