Static关键词作用和用法
静态变量(类变量)、静态方法(类方法):static声明的属性或方法。
静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效。它有如下特点:
- 为该类的公用变量,属于类,被该类的所有实例共享,在类载入时被初始化。
- static变量只有一份。
- 一般用“类名.类变量/方法”来调用。
- 在static方法中不可直接访问非static的成员。
public class TestStatic { private int id; private String name; private String major; static String school = "清华"; public void run(){ System.out.println("跑"); } static void school(){ // run();不能在静态方法中调用非静态方法 System.out.println(school); } public static void main(String[] args) { TestStatic testStatic = new TestStatic(); TestStatic.school="北大"; TestStatic.school(); } }
内存分析;
静态初始化块
构造方法用于对象的普通属性初始化。
静态初始化块,用于类的初始化操作,初始化静态属性。
在静态初始化块中不能直接访问非static成员。
注意事项
静态初始化块执行顺序(学完继承再看这里):
- 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到类的静态初始化块为止。
- 构造方法执行顺序和上面顺序一样!!
public class TestStatic2 { static String company; static { company = "华为"; printCompany(); } public static void printCompany(){ System.out.println(company); } public static void main(String[] args) { } }执行结果: