public class Test { public int a=2; public static int b=3; { System.out.println("A"); } static{ System.out.println("B"); } public void test() { System.out.println("AA"); } public static void one(String t){ System.out.println(t);} public static void main(String[] args){ one("BB"); Tests1 = new Test(); s1.test(); System.out.println(); Test s2 = new Test(); s2.test(); } }
static代码块也叫静态代码块,在类中独立于成员变量和成员函数的,一个类中可以有多个静态代码块。静态代码块之间没有先后顺序,只取决于编写时的顺序。JVM加载类时会同时执行这些静态代码块。
static属性
static修饰属性也叫类属性,该类的所有对象共享的一个属性,只开辟一块内存空间,在加载类的时候同时加载类属性到方法区开辟内存空间。
非static修饰的属性也叫成员属性,每创建一个对象就开辟一块独立的内存空间,在创建对象时开辟内存空间。
static方法
static方法也叫类方法,类方法中不能再用this和super表示对象,类方法是调用父类的还是子类重写的只和类名有关。
非static修饰的方法也叫成员方法,成员方法是调用父类的还是子类重写的只和对象本身有关。
static的属性和方法是不需要对象就能调用的。