一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用,并且静态的代码要优先于主函数
public class StaticCode {
/**
* @param args
*/
public static void main(String[] args) {
new StaticCodeDemo(5);
//没有具体的指向,类中的静态代码是不会得到执行的
StaticCodeDemo a=null;
System.out.println("d"); //通过类名直接调用类中的静态方法
StaticCodeDemo.show();
}
//静态代码块
static{
System.out.println("a");
}
} class StaticCodeDemo{
int i=9;
static{
System.out.println("b");
} //这一段属于构造函数
{
System.out.println("e"+this.i);
}
//静态方法,必须要通过类使用时,或者
static void show()
{
System.out.println("c");
}
//构造函数给对应对象初始化的
StaticCodeDemo(int x)
{
System.out.println("f");
}
StaticCodeDemo(){}
} 输出结果为: a
b
e9
f
d c 运行分析:首先先执行StaticCode 中的静态代码输出a,然后执行new StaticCodeDemo(5);在加载StaticCodeDemo中的静态代码输出b,之后输出构造函数中的e9,之后执行有参数的代码中等的输出语句f,之后是输出d,左后执行StaticCodeDemo中的静态方法输出c
|