java中静态变量初始化、修改和序列化

125 阅读1分钟

通过 static 关键字修饰的变量称为静态变量,静态变量是类级别,不属于类的任何特定实例,而是属于类本身。静态变量在类初始化的时候被初始化,随着类的卸载而卸载,在类加载的时候就在内存中开辟了一块空间(静态区),并且只初始化一次,无法被 new 出多个对象。

一、关于静态变量的初始值

静态变量在类初始化的时候会根据开发者的设值情况初始化,如果没有设置值,则会初始化默认值。

image.png

结果:

image.png

二、关于静态变量值的修改

2.1、可以在静态方法中更改某个静态变量的值

image.png image.png

2.2、可以在动态方法中更改某个静态变量的值

image.png image.png

三、静态变量无法被序列化

静态变量无法被序列化(序列化信息中不包含这个静态成员域),如果某个类定义了静态变量(并且该静态变量有初始值,如:private static String c = "yuqn";),使用某个方法修改静态变量的值(Class.c = "new_yuqn";),这个时候拿到的c值为new_yuqn;如果将该类序列化后,在另外一个虚拟机中反序列化,就会发现c的值为yuqn,也就是初始化时候的值。