static (静态的)
可以用来修饰属性、方法、代码块(或初始化块)、内部类
static修饰属性(类变量):
- 1.由类创建的所有的对象,都共用这一个属性
- 2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。vs实例变量(非static修饰的属性,各个对象各自拥有一套副本)
- 3.类变量随着类的加载而加载的,而且独一份
- 4.静态的变量可以直接通过“类.类变量”的形式来调用
- 5.类变量的加载是要早于对象。所以当有对象以后,可以“对象.类变量”使用。但是"类.实例变量"是不行的。
- 6.类变量存在于静态域中。
static修饰方法(类方法):
- 1.随着类的加载而加载,在内存中也是独一份
- 2.可以直接通过“类.类方法”的方式调用
- 3.内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法是可以调用静态的属性或静态的方法
注:静态的方法内是不可以有this或super关键字的!
静态的结构(static的属性、方法、代码块、内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构
static 修饰代码块(静态代码块):
- 1.里面可以有输出语句
- 2.随着类的加载而加载,而且只被加载一次
- 3.多个静态代码块之间按照顺序结构执行
- 4.静态代码块的执行要早于非静态代码块的执行。
- 5.静态的代码块中只能执行静态的结构(类属性,类方法)
static修饰内部类(静态内部类):
- 1 它的创建是不需要依赖于外围类的。
- 2 它不能使用任何外围类的非static成员变量和方法。