class="static加载">class StaticCode { static String country; static { country="China"; System.out.println("StaticCode is loading !!"); } } public class TestStaticCode { static { System.out.println("TestStaticCode is loading!!"); } public static void main(String[] args) { System.out.println("begin main method !!"); new StaticCode(); new StaticCode(); } }
?
?
?输出结果为
TestStaticCode is loading!!
begin main method!!
StaticCode is loading!!
==================================================================================
程序要进入main方法 首先要加载TestStaticCode这个类
从而要执行定义在这个类的静态代码段
输出 TestStaticCode is loading!!
当程序运行到 第一次出现StaticCode时 就会加载StaticCode这个类从而执行这个类的静态代码段
由于静态代码段只在类第一次加载时才执行 也就是第一个 new StaticCode(); 时才执行
后面不论你出现了多少个StaticCode都不会再次执行
而且静态代码段
不依赖于类的实例化 只要你的程序执行过程中第一次碰到了StaticCode就会马上执行静态代码
不信你把两个new语句去掉 换成
StaticCode s = null;
声明一个StaticCode 的空引用 程序也会执行静态代码