Java中关键字static静态变量的应用

学习目标:

掌握Java中的静态资源的应用

学习内容:

1、static关键字的概念
static 关键字表示静态,可以修饰变量构成静态变量,修饰方法构成静态方法。静态变量和静态方法都归类所有,称为类的静态成员,用static关键字修饰。

  • 静态变量
    注意:静态变量会一直存在于内存空间中,不会被释放,但可以被置空,所以我们要尽量少用静态变量,因为非常耗资源。
    定义语法:
static 数据类型 成员变量 [=初始值];

静态变量的访问:

类名.静态变量  (推荐写法) 
对象/实例.静态变量
  • 静态方法
    static 也可以修饰方法称为静态方法,归类所有,也称类方法。语法:
[修饰符] static 返回值类型 方法名(形参列表){ 
}

静态方法访问方式:

类名.静态方法()  (推荐) 
对象.静态方法()

2、静态方法特性(重要)

[1] 静态方法中可以访问静态变量和类的其他静态方法
[2] 实例方法中可以访问静态成员(静态变量和静态方法);
[3] 静态方法不能访问实例成员

原因:

要明白上面问题的原因我们需要了解一下静态资源在JVM中的加载机制。首先我们运行Java程序:
1、是Class文件被加载到静态区
2、加载字节码,给静态变量分配内存
3、计算成员变量在未来new对象时需要的堆内存大小
4、加载方法,标记方法签名

问题解决:
也就是说静态变量在类初始化时就加载了,而非静态资源则是派生类(new)的时候才加载,静态资源早于非静态资源而存在,了解这个那么上面问题就很好解决了:
1、静态方法不能引用非静态资源(静态变量和方法),因为非静态资源是在类的派生后也就是实例化后才加载,而静态资源初始化阶段就一直存在,存在的静态资源当然访问不了一个不存在的资源。
2、静态方法可以引用静态资源(静态变量和方法),因为静态资源在类的初始化就存在,他们一同加载,自然可以访问。
3、非静态方法可以引用静态资源,因为非静态方法是在派生(实例化)后产生的,而静态资源早就已经存在了,非静态方法自然可以访问一个已经存在的静态资源。

JVM加载static成员的过程如下图:
在这里插入图片描述


总结:

以上就是Java中的静态变量的应用了,欢迎大佬指正错误。

posted @ 2021-03-30 15:00  Yan_Yang  阅读(137)  评论(0编辑  收藏  举报