下面以一个小demo为例进行探讨
运行结果:
class A static
class B static
I'm A class
class A
I'm B class
class B
由此可见:执行顺序是:静态初始化块 -> 初始化块 -> 构造方法
=========================================================
package com.algorithm; public class Animal { private int count; public int getCount() { return count; } }
package com.algorithm; public class Panada { public static void main(String[] args) { Animal animal = new Animal(); System.out.println("========"+animal.getCount()); } }
运行结果:0
package com.algorithm; public class Animal { private static int count; public static int getCount() { return count; } }
package com.algorithm; public class Panada { public static void main(String[] args) { System.out.println("========"+Animal.getCount()); } }
运行结果:0
package com.algorithm; public class Animal { private static int count; static { count=2; } public static int getCount() { return count; } }
package com.algorithm; public class Panada { public static void main(String[] args) { System.out.println("========"+Animal.getCount()); } }
运行结果:2