概述:
静态修饰符,静态指编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,用static修饰的成员不需要实例化对象就可以通过类名加“.”进行访问。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。
因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
static修饰变量
被static修饰的变量叫静态变量,JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。可用类名直接访问。
static修饰方法
静态方法可直接通过类名调用,任何实例也都可以调用,因此静态方法不能用this和super关键字。不能直接访问所属类的实例成员变量和成员方法,因为非静态成员方法/变量都必须依赖具体的对象才能够被调用。
在非静态成员方法中是可以访问静态成员方法/变量的
static代码块
静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内。
JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
静态代码块与静态方法的区别
如果有些代码必须在项目启动的时候就执行,就需要使用静态代码块,这种代码是主动执行的;
需要在项目启动的时候就初始化但是不执行,在不创建对象的情况下,可以供其他程序调用,而在调用的时候才执行,这需要使用静态方法,这种代码是被动执行的。
静态方法在类加载的时候 就已经加载 可以用类名直接调用。
本文参考链接:https://blog.csdn.net/fengyuzhengfan/article/details/38082999