最近在复习一些Java知识..顺便给自己做一下总结,哪里写得不好,多情大家指教!!
实例变量和类变量平时我们好像多少叫做非静态变量和静态变量,两者的区别就是前者没static修饰,后者有static修饰。实例变量和类变量,这样的叫法,可以很直接得说明它们一个是属于实例的,另一个是属于类的,那什么叫属于实例和属于类呢?
属于实例:在new出类的实例的时候进行初始化的变量。
属于类: 在JVM加载这个类的时候进行初始化。
在同一个虚拟机上,类的加载只有一次,也就是类变量在虚拟机中只有分配一块内存,而实例变量在内存中可能有多块内存,要看你new出几个对象。
这里说一下java中的前向引用,看一下一段代码
Java代码
int a = b + 1;
int b = 2;
对两个×××初始化的时候会报错 ,因为在初始化a时,需要更具b的值进行计算,所以是非法前向引用了b,但是看下下一段代码
static int b = 2;
这段代码就不会报错,因为 b 是类变量,类变量的初始化是在类加载的时候进行的,所以b的初始化实在a之前,所以啊可以根据b的值进行计算。
类变量可以通过类进行访问,也可以通过实例进行访问,两种访问都是一样的,因为实例进行访问是间接通过类进行访问。