首页 > 试题广场 >

是否可以在static环境中访问非static变量?

[问答题]
是否可以在static环境中访问非static变量?
zll头像 zll
不可以,静态变量属于类变量,随着类的加载而加载,当调用类变量时java虚拟机会对类的静态变量,静态方法进行初始化,此时如果静态方法中有非静态变量,由于非静态变量是随着实例的创建而创建,此时还没有实例创建,所以非静态变量还没有创建,所以会出现编译错误。
发表于 2016-03-18 22:48:17 回复(3)
不可以。因为static环境,当JVM完成类的加载以后就创建好的,这个时候非static变量还未创建出来,因为非static变量需要实例化一个类后才能访问,因此static环境不能访问非static变量。
发表于 2016-09-12 09:22:57 回复(1)

不可以在 static 环境中访问非 static 变量。因为 static 成员是在类被加载时被加载的,而非 static 成员则是在类被实例化时创建的,只能通过实例进行访问。当在 static 环境中访问非 static 成员时,此时实例很可能还没有被创建,所以不能访问非 static 成员。所以在 static 环境中不可访问非 static 成员。

发表于 2016-07-26 20:40:48 回复(1)
非静态的既可以访问静态的,也可以访问非静态的,而静态的只能访问静态的。
发表于 2016-03-20 16:11:11 回复(1)
因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。
发表于 2015-12-02 16:14:38 回复(14)
public static void main(String []args)
发表于 2018-01-30 21:41:37 回复(0)
首先看static中有没有实例化对象,有的话就可以访问,没有的话就不能访问。
发表于 2019-09-26 22:50:58 回复(0)
被static关键字修饰的变量或方法属于静态属性,它的内存是存储在JVM的方法区中。而实例中的变量是new(实例化)出来的,被存放到堆中。因为static静态属性(内存空间)是随着类的加载而加载。因为类是需要实例化出来才可以为了里面的变量分配内存(也就是说当类被加载的时候变量还不存在),所以静态方法不能使用非静态变量(还不存在)。
发表于 2019-05-16 16:28:28 回复(0)

不可以

static变量属于类,类加载时,非static变量不一定有实例化,所以不能访问

发表于 2019-03-30 11:50:13 回复(0)
静态变量属于类变量,随着类的加载而存在,被初始化,而非静态变量则是随着实例变量的创建而存在。
发表于 2018-02-24 15:46:55 回复(0)
不可以,因为static是静态的,在类的实例化中的值是一样的。当类随着jvm加载时,属于静态的变量或方法也被加载到静态内存中并初始化,不需要实例化就可以调用,而非静态的必须实例化才能够调用
编辑于 2017-03-30 00:23:38 回复(1)
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
发表于 2015-10-29 12:10:41 回复(0)
如果说 static方法中是否能“”“”“”直接“”“”“”调用非静态变量,答案是不行,上边解释了一大堆了。但是可以不直接调用啊,我在static方法中创建实例不就可以调用了?比如说main函数就是static的,肯定可以new实例调方法啊
发表于 2017-09-26 09:35:07 回复(9)
不可以在static环静中,不可以访问非static。因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。类的加载先于实例的创建,因此静态环境中,不可以访问非静态!
发表于 2015-11-21 14:51:37 回复(7)
可以访问,但是不能直接访问,需要通过对象访问。静态是依托于类存在的,类在加载的时候,静态环境伴随类加载完成而完成,而非静态变量依托于对象存在而存在,在对象产生的时候对应的变量才会产生,在非静态变量产生之后静态环境就能访问了!
发表于 2017-12-09 18:55:56 回复(1)
如果显示的创建对象实例,就可以,没有的话就不可以
发表于 2021-08-13 09:56:54 回复(0)
static变量随着类的加载而加载,而此时非static变量可能还没被创建,因为非static变量需要所属类实例化之后才创建,所以用static变量访问非static变量可能访问不了
发表于 2021-08-03 00:51:50 回复(0)
一个类在load进内存的时候在initializing的环节完成static变量的初始化和static代码块的执行,此时还没有实例化,所以那些成员变量都是没有初始化的,自然不能访问。
发表于 2021-05-24 23:50:33 回复(0)
不可以
发表于 2021-05-08 15:06:11 回复(0)
因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。
发表于 2021-04-27 23:52:35 回复(0)