静态修饰符
静态方法 可以与 普通方法 或者 静态方法 重载
静态属性 和 静态方法 可以被继承,但是 静态方法 不能被重写
static 不可以修饰局部变量,所以静态方法和非静态方法中的变量都不能定义为静态变量
static可以修饰:属性,方法,代码段,内部类(静态内部类)
静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化,初始化后可以被改变
静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次,只能调用静态变量和静态方法;
静态方法中直接不能访问类的非静态成员变量和非静态成员方法,只能直接访问静态成员变量、静态成员方法, 因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用;
非静态成员方法中是可以访问类的静态成员方法/变量
非静态代码块,在创建对象的时候(即new一个对象的时候)执行,每次创建对象都会执行一次;
static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能通过类名调用static修饰的属性、方法等。
static 和 this 、super 势不两立,static 跟具体对象无关,而 this 、 super 正好跟具体对象有关
在JVM加载一个类的时候,若该类存在static修饰的成员变量和成员方法,则会为这些成员变量和成员方法在固定的位置开辟一个固定大小的内存区域(只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们)
普通方法中可以通过this调用静态方法
静态方法中不能定义静态变量,因为static不能修饰局部变量