java什么时候给类变量分配内存,注意是类变量不是对象成员变量!!!

我们知道运行程序时第一步是jvm加载.class文件到内存中,.class文件里肯定有定义的变量(这里就是一般的变量,不考虑static变量),那么类变量分配内存空间就是在这里了。
这里有个疑问,这个类变量是文本给加载的,还是按照其变量类型给分配内存空间的?

“类变量”只是一个定义,并不存在实例,所以不存在分配内存的动作。
你不可能访问类的变量,只能访问对象实例的成员。

class的变量这运行时加载的,属于jvm的栈帧中的局部变量区,同时运行时也可以分配堆上的数据。在运行时根据类型来分配空间。

根据变量类型,在运行时,存放在本地局部变量表中,存储单位为slot,默认32位,long, double等为连续两个slot存储。

刚刚说的是成员变量。类变量,既静态变量,是在运行时的准备阶段,通过变量类型,在方法区中分配内存空间,并复初始值,比如,0,null等。