static 静态修饰符
可以修饰变量,方法,匿名代码块
静态的成员,不属于某个对象,而是属于类,被这
个类的所有对象共享。在类加载的时候,会在方法
区中加载类中的静态成员和静态代码块,并执行静
态代码块。
变量
static可修饰属性,不能用来修饰局部变量
public static int count = 10;
在当前类中,可以直接通过变量名调用静态的属、性。
在外部类中,必须通过类名调用 类名.变量名
也可以通过引用来调用
静态方法
1.可以不通过对象调用
2.不能直接调用非静态的成员,不能使用super
和this关键字
3.不能被非静态方法重写
4.不能被重写
如果在子类中定义与父类相同的静态方法时:
具体要执行哪个静态方法,在编译阶段就已经
决定了,在运行时,不会根据对象类型而改变
静态匿名代码块
static{
...
}
在类加载的时候,加载并执行一次
创建对象时,类中代码的加载顺序
1.类加载 调用类时
2.加载类中的静态属性,并初始化
3.加载类中的静态方法
4.加载类中的静态代码块,并执行
5.给对象分配内存空间
6.加载类中的非静态属性,并初始化
7.调用构造器,返回对象的地址
非静态的方法在调用时,才会加载,如果没有调用
不会占用内存。