java小程序在DOS命令行中报错,无法从静态上下文中引用非静态变量。等大虾解释,谢谢!

如题所述

在java中无法在静态方法中调用非静态的变量,主要是因为静态时属于类的,而非静态是属于对象的,当你调用静态方法调用时,对象是否创建,变量是否初始化,是不是需要考虑?所以在java中,无法判断是否非静态的变量是否存在,即静态方法不能调用非静态变量,用现实的例子举证也是,比如你现在想调用你未来的钱包,花你未来的钱,那是不可能的吧,所以同理!希望你能够明白
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-15
静态的变量及方法可以在没有创建实例时使用,是属于类的;而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创建实例时我们在静态方法中调用了非静态成员变量或方法自然是非法的,所以编译器会在这个时候报这种错误.解决方法有两种:一是把另一个非静态变量定义为静态变量;二new一个新对象出来,通过对象来调用非静态变量。

望采纳!
第2个回答  2012-11-15
你在静态方法(static修饰的)调用了非static成员吧。

...从静态上下文中引用非静态变量。等大虾解释,谢谢!
在java中无法在静态方法中调用非静态的变量,主要是因为静态时属于类的,而非静态是属于对象的,当你调用静态方法调用时,对象是否创建,变量是否初始化,是不是需要考虑?所以在java中,无法判断是否非静态的变量是否存在,即静态方法不能调用非静态变量,用现实的例子举证也是,比如你现在想调用你未来的钱...

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

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

...出现了问题:无法从静态上下文中引用非静态变量subName和fpi
因此在一个静态的方法中是不能直接访问非 static 变量,我们必须知道你想访问的是哪个对象实例的状态,也就是说我们必须用 myInstance.fieldA 这种方法来访问,这也要求我们手上必须有一个对象实例。所以你的代码中:Sub sub=new Sub();System.out.println("Sub.subName= "+Sub.subName);这个 Sub...

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

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

“无法从静态上下文中引用非静态方法”这个问题怎么解决?
用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。

显示“无法从静态上下文中引用非静态”懂java的帮我看看啊
main(String[] args){ Test.boolTest(true,false);Test.charTest('a','s');} 建议使用第一种改法!!!刚才试了一下,还有一个错误,你的boolean f(boolean b){ ...}没有返回值错误.将其改为void f(boolean b){ ...}就可以了.我试过了.改过之后就能够正确运行了!!!你试试看!!!

JAVA无法从静态上下文中引用非静态 变量 this
内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public ...

错误: 无法从静态上下文中引用非静态 变量 this
this 是指向当前对象的引用,需要对象实例化以后才能赋值。而静态成员都是类所属的,不需要对实例化就可以使用,所以在静态上下文中引用this时可能其还未赋值,所以应不能这样使用。

相似回答