Java温故而知新(六)

1.记录下static关键字在内存中的分配以及通过static了解JAVA类的加载顺序问题。

知识点:

首先,被static关键字修饰的成员方法或成员变量,是属于类而不属于对象(运行期间生成),那么被static关键字修饰的方法或者变量,会随着类的加载而加载,被保存在方法区的静态区中。

内存图分配如下:

 图中可知,被static关键字修饰的变量和对象没有任何关系,在类加载过程中,被static关键字修饰的变量会在方法区中的静态区开辟一块内存等待赋值,并将地址返回给变量。调用时是通过类调用的。

*** static可以多次赋值,但最好不要那么做,负责会失去静态变量的意义。

static关键字的意义在于:

①.为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关,节省了内存空间,而且实现了一处变,处处变,简化的代码的修改。

②.实现了某个方法或属性与类而不是对象关联在一起,使静态变量或方法不依赖对象实现。

2.JAVA父子类的加载顺序问题:

https://www.cnblogs.com/jiataoq/p/10967534.html

其实总的来说,顺序的问题本质上还是要理解JAVA的类是如何加载的,上文说的很详细,不过有一点就是对于静态成员变量和静态代码块的加载顺序,应该是谁在前面谁先执行。验证如下图:

猜你喜欢

转载自www.cnblogs.com/NiYv/p/12198107.html