关于java的无法从静态上下文中引用非静态 方法

public class TestArrsy{
public static void main( String args[]){
int[] b = new int[ args.length];
for( int i = 0;i < args.length; i++){
System.out.println("您要输入的数组为"+"="+args[i]);
b[i] = Integer.parseInt(args[i]);
}
print (b);
selet (b);
}
public void print(int[] a) {
for( int i =0;i <a.length; i++ ) {
System.out.print( a[i] + " ");
}
}
public static void selet(int[] a ) {
for(int i=0;i<a.length; i++) {
for(int j = i+1; j<a.length-1;j++){
if ( a[j]<a[i]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
}

/*public class void info(int[] b) {
for( int i =0;i <b.length;i++ ) {
System.out.print( b[i] + " ");
}
}
*/
结果:
D:\java>javac TestArrsy.java
TestArrsy.java:9: 错误: 无法从静态上下文中引用非静态 方法 print(int[])
print (b);
^
1 个错误

D:\java>javac TestArrsy.java
TestArrsy.java:9: 错误: 无法从静态上下文中引用非静态 方法 print(int[])
print (b);
^
1 个错误

由于tostring()方法是非静态的,故不能直接通过类名引用,上面的这句代码:
system.out.println(course.tostring());
改为
system.out.println(cs.tostring());
即可。
有问题欢迎提问,满意请采纳,谢谢!
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-28
由于tostring()方法是非静态的,故不能直接通过类名引用,上面的这句代码:
system.out.println(course.tostring());
改为
system.out.println(cs.tostring());
即可。
有问题欢迎提问,满意请采纳,谢谢!
第2个回答  推荐于2018-03-14
Java是面向对象的语言,所以我希望你理解以下几点

1.TestArray是一个对象类,print方法是TestArray类下的一个方法。

2.要调用一个对象类的方法,有两种方法。
(1)是新建一个对象,然后调用该对象的方法.
调用方法:new TestArray().print()
(2)该方法是public的,static。
调用方法:TestArray.print()
静态方法的写法:public static void print()...本回答被提问者和网友采纳
第3个回答  2013-04-24
main方法是静态的只能引用静态的方法,你把print改成静态或者在main方法里new TestArrsy().print(b)

java无法从静态上下文引用非静态方法
在Java编程中,初学者有时会遇到一个常见问题,即在静态上下文中引用非静态变量。非静态方法的引用问题源于静态方法与非静态变量之间的概念差异。静态方法与非静态变量分别代表了不同的编程场景。静态方法可以在没有创建实例的情况下使用,这是因为它们与特定类相关联,而不是特定的实例。与此相反,非静态...

java中“无法从静态上下文中引用非静态变量”为什么?理由是什么?_百度...
静态变量是在类加载的时候创建的并赋值的,因此在一个动态方法里使用静态变量时可以的;静态上下文(静态代码块)也是在类加载时执行的,而非静态变量都是在类加载完成后再赋值的,如果能在静态块中使用非静态变量,就会因为该变量的空指针而抛异常(可能还不只这点问题,只是举个例)。JAVA类的加载机...

Java中 无法从静态上下文引用非静态方法
静态方法中无法直接调用非静态方法的。 你可以先new出来circle 对象。class hauptprogramm { public static void main ( String [] args){ circle kr = new circle(); circle.readCircle(); System.out.println( kr ); }}还有 记得以后类名都要大写 ...

无法从静态上下文中引用非静态 方法 a()什么意思
静态方法是属于类的,而非静态方法则属于类的实例,也就是对象的,属于两个范围,所以不能直接引用。具体到你的这段代码,Test1类里的a(),b()方法要在main里调用,应该先生成Test1的一个实例对象,也就是要先Test1 t = new Test1(),然后用t.a(),t.b()来调用。或者你把这两个方法也改成静...

JAVA无法从静态上下文中引用非静态
由于toString()方法是非静态的,故不能直接通过类名引用,上面的这句代码: System.out.println(Course.toString()); 改为 System.out.println(cs.toString());即可。有问题欢迎提问,满意请采纳,谢谢!

java ,为什么无法从静态上下文中引用非静态方法
因为编译器不知道那个方法在哪,两种解决办法,一种加static修饰,这样在程序运行时就会被加载入内存,另一种创建对象,然后调用对象的方法,如 public static void main(String args[]){ TextLinerSearch t = new TextLinerSearch ();t.linearSearch(list,-3);} ...

“无法从静态上下文中引用非静态方法”这个问题怎么解决?
解决方法:可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。 静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于...

java无法从静态上下文中引用非静态。什么意思。
Yuan.input(); 改成yuan.input();因为你这里Yuan直接 " . "的意思就是直接引用类Yuan里面的静态方法或者成员变量。而你类Yuan里面是没有静态方法,所以提示这个错误。我估计你是的意思是生成类的对象。再执行方法;改成yuan就是执行对象的方法;...

无法从静态上下文中引用非静态
在static 修饰的方法中 只能调用 static 修饰的 属性和方法,原理 同 推荐答案中所说的!

显示“无法从静态上下文中引用非静态”懂java的帮我看看啊
第一种:public static void main(String[] args){ Test test = new Test() ;test.boolTest(true,false);test.charTest('a','s');} 第二种:public static void boolTest(boolean x,boolean y){...} public static void charTest(char x,char y){ ...} public static void main(String...

相似回答