static是Java中的一个关键字,表示静态的意思。它可以用来修饰类、方法和变量。
静态成员变量:被static修饰的成员变量,也称为类变量。它属于类本身而非实例,所有该类的实例共享同一个静态变量。可以通过类名来访问,也可以通过实例对象来访问。静态变量在类加载时被初始化,并且只会被初始化一次。静态变量在内存中的存储位置是在静态数据区。
静态方法:被static修饰的方法,也称为类方法。它属于类本身而非实例,可以通过类名来调用。静态方法可以直接访问类的静态变量,但不能直接访问类的非静态变量。静态方法可以在没有创建类的实例对象的情况下被调用。静态方法不能被子类重写,但可以被子类方法隐藏。
静态代码块:用static修饰的代码块,在类加载时执行。静态代码块在类加载时只会执行一次,并且只能访问类的静态变量和方法。静态代码块常用于进行一些静态变量的初始化操作。
静态内部类:被static修饰的内部类,称为静态内部类。静态内部类与普通内部类不同,它不能直接访问外部类的非静态成员,只能访问外部类的静态成员。
总结:
static修饰的成员属于类本身,而非实例;
静态成员在类加载时被初始化,并且只会被初始化一次;
静态成员可以通过类名直接访问,也可以通过实例对象访问;
静态方法可以直接调用,而不需要创建类的实例对象;
静态方法不能直接访问非静态成员;
静态代码块在类加载时执行,只能访问静态成员;
静态内部类与普通内部类不同,不能直接访问外部类的非静态成员。