参考:https://zhuanlan.zhihu.com/p/76357196
目录
static用法:
静态中没有super和this关键字。
1、static修饰类的成员变量
作用:如果一个类的成员变量使用static关键字,那么这个成员就不再属于对象了,而是属于类,会给所有该类的对象共享,在内存中只有一个。而如果一个类的成员变量没用static修饰,那么该成员变量属于类的对象,每个类对象都会有一个自己的这个成员。
加载时间:随着类的加载而加载。
调用:可以根据类名. 进行调用。
2、static修饰类的成员方法
作用:static修饰类的成员方法属于类。
加载时间:随着类的加载而加载。
被调用方式:可以根据类名. 进行调用。
静态方法:
1).可以调用静态的成员变量,成员方法
2).不能调用非静态的成员变量,成员方法
3).只能在静态方法中调用静态的成员
3、static修饰类
static不可以修饰顶级类,但是可以修饰内部类。
静态内部类和非静态内部类之间区别:
1. 内部静态类不需要有指向外部类的引用。但非静态内部类需要。
2. 静态类只能访问外部类的静态成员,非静态内部类能够访问外部类的静态和非静态成员。
3. 非静态内部类不能脱离外部类实体被创建,非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。
4、静态代码块
典型用途: 用来一次性的对静态成员变量进行赋值.
格式:
static {
方法体
}
当第一次用到本类时,代码块执行唯一的一次,第二次使用的时候就不在执行了;
静态内容总是优先于非静态,所以静态代码块比构造方法优先执行。