java中“无法从静态上下文中引用非静态变量”为什么?理由是什么?

如题所述

静态变量是在类加载的时候创建的并赋值的,因此在一个动态方法里使用静态变量时可以的;静态上下文(静态代码块)也是在类加载时执行的,而非静态变量都是在类加载完成后再赋值的,如果能在静态块中使用非静态变量,就会因为该变量的空指针而抛异常(可能还不只这点问题,只是举个例)。JAVA类的加载机制就决定了无法从静态上下文中引用非静态变量。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-21
静态上下文中的内容初始化在
非静态变量初始化之前
非静态变量还未初始化,初始化后方可使用,new
一个类的时候才会初始化对象,

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

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

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

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

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

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

...出现了问题:无法从静态上下文中引用非静态变量subName和fpi
状态 (State) 是表示对象的某些属性值,比如一个成员变量,它是反应这个对象本身的信息和状态的值。而静态 static 而不是反应某个对象实例的状态信息的。因此在一个静态的方法中是不能直接访问非 static 变量,我们必须知道你想访问的是哪个对象实例的状态,也就是说我们必须用 myInstance.fieldA 这种...

错误: 无法从静态上下文中引用非静态方法
它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用静态变量。如果发生调用,则编译器会报出如上的错误。例如:由于main方法其实是一个静态方法,而maxProfit方法并没有实例化,所以会报错 错误: 无法从静态上下文中引用非静态 变量 this 修改方法:只需要实例化调用的静态变量所属对象即可。

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

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

相似回答
大家正在搜