1.static可以用于修饰成员变量、方法以及块,并不会改变类中成员的权限修饰,如:private修饰的成员变量,类外只能类名或非私有方法调用,而不能使用对象名调用。
2.static方法和成员变量,可使用类名直接调用,而不需要实例化:类名.方法名();类名.变量名();
也可以实例化后,使用对象名调用。
3.static方法(静态方法):
3.1 静态方法中,没有this,因为没有创建对象;
3.2 静态方法中不能调用非静态成员变量、方法,但非静态方法可以调用静态成员变量、方法;
4.static变量(静态变量):
4.1 静态变量在类第一次加载时,就会初始化并赋值;
4.2 每一个静态变量在内存中都是只有一个副本,所有对象共享这个副本,无论哪个对象或是类名调用修改,都会使之变化;
4.3 static不能用于修饰局部变量,这是Java语法规定的。
5.static块:
5.1 静态块可以在类的任何位置定义,会在类第一次加载时,依次调用,并且只调用一次,即还没创建对象便已调用:
public class Test extends Base{ static{ System.out.println("test static"); } public Test(){ System.out.println("test constructor"); } public static void main(String[] args) { new Test(); } } class Base{ static{ System.out.println("base static"); } public Base(){ System.out.println("base constructor"); } }
base static test static base constructor test constructor