标签:alt 变量赋值 一个 exp hid sys 实例 vat 使用
(1)静态类成员变量的显式赋值语句
(2)静态代码块中的语句
整个类初始化只会进行一次,如果子类初始化时,发现父类没有初始化,那么会先初始化父类。
public class Test{ public static void main(String[] args){ Father.test(); } } class Father{ private static int a = getNumber(); static{ System.out.println("Father(1)"); } private static int b = getNumber(); static{ System.out.println("Father(2)"); } public static int getNumber(){ System.out.println("getNumber()"); return 1; } public static void test(){ System.out.println("Father:test()"); } }
运行结果: getNumber() Father(1) getNumber() Father(2) Father:test()
private static int a = getNumber(); static{ System.out.println("Father(1)"); } private static int b = getNumber(); static{ System.out.println("Father(2)"); } 顺序改变 输出内容也改变 static{ System.out.println("Father(1)"); } private static int a = getNumber(); private static int b = getNumber(); static{ System.out.println("Father(2)"); }
类加载时候:Father.test();第一次使用的时候类就加载,此时静态变量赋值和静态初始化按书写顺序同时进行 类加载要比实例化靠前 对象实力化=执行构造器=new 类初始化块在类加载时进行,static静态变量也在类加载时赋值 实例初始化块在实例化对象时进行,同事执行构造器
区别有继承关系的时候,继承关系时候父类优先子类空间运行
父子类
public class Test{ public static void main(String[] args){ Son.test(); System.out.println("-----------------------------"); Son.test(); } } class Father{ private static int a = getNumber(); static{ System.out.println("Father(1)"); } private static int b = getNumber(); static{ System.out.println("Father(2)"); } public static int getNumber(){ System.out.println("Father:getNumber()"); return 1; } } class Son extends Father{ private static int a = getNumber(); static{ System.out.println("Son(1)"); } private static int b = getNumber(); static{ System.out.println("Son(2)"); } public static int getNumber(){ System.out.println("Son:getNumber()"); return 1; } public static void test(){ System.out.println("Son:test()"); } }
运行结果: Father:getNumber() Father(1) Father:getNumber() Father(2) Son:getNumber() Son(1) Son:getNumber() Son(2) Son:test() ----------------------------- Son:test()
结论:
每一个类都有一个类初始化方法<clinit>()方法,然后子类初始化时,如果发现父类加载和没有初始化,会先加载和初始化父类,然后再加载和初始化子类。一个类,只会初始化一次。
标签:alt 变量赋值 一个 exp hid sys 实例 vat 使用
原文地址:https://www.cnblogs.com/harden13/p/14527153.html