Java中static关键字的作用,请记住这5点
1.修饰成员变量
用来修饰成员变量,将其变为类变量,从而实现所有对象对该成员的共享。(因为类加载进方法区,多个对象是共享的。)
引申考点:JVM类加载机制
2.修饰成员方法
用来修饰成员方法,将其变为工具类方法,可以直接使用“类名.方法名”的方式调用。
注意1:被static修饰的变量和方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。(JDK把不同的静态资源放在了不同的类中,而不把所有静态资源放在一个类里面,个人认为主要有三点好处:
- 实现分类;
- 避免重名;
- 避免静态资源类无限膨胀。)
注意2:非静态方法可以访问静态资源,但静态方法的只能访问静态资源。(因为静态资源属于类,但是是独立于类存在的。从JVM的类加载机制的角度讲,静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的。类的初始化早于类的new的,所以对于静态资源来说,它是不可能知道一个类中有哪些非静态资源的;而对于非静态资源来说就,它是new之后产生的,因此属于类的这些东西它都能认识。)
3.修饰静态代码块
用来修饰静态代码块(static{}),将多个类成员放在一起初始化,只会在类初次加载时被执行一次。
注意3:
- 静态资源的加载顺序是严格按照静态资源的定义顺序来加载的;
- 静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问;
- 静态代码块是严格按照父类静态代码块 -> 子类静态代码块的顺序加载的,且只加载一次。
4.修饰内部类
用来修饰内部类,static只能修饰一个内部类。
5.静态导包
用于静态导包(import static …),在不与当前类的方法名冲突的前提下,可以直接使用“方法名”调用导入类的方法。
写在最后:
一个致力于 帮助应届生就业 的清水博主 !
如有 不足,欢迎 评论区 指正,我们 共同进步 !
创作不易,如有帮到您,请您 点赞、评论、+收藏 哦!
关注我,助您快速备战 春招 和 秋招!