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 的空引用 程序也会执行静态代码