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

被折叠的 条评论
为什么被折叠?



