package test;
/*
* 当一个类中,有静态方法、静态代码块、构造方法时;
* 如果 初始化该类,new一个对象,则会
* 1,先调用静态代码块;
* 2. 再调用构造器,初始化该对象;
* 3.静态方法需要被主动显式调用;
* 可通过以下简单的调用代码得出结论;
* 而且,static代码块只会初始化一次,之后不管实例化多少对象,都不会再调用该static代码块;
* 而构造器依赖于对象而存在,new一个对象,则会调用依次构造器。
* */
public class test_static_constrcutor {
test_static_constrcutor()
{
System.out.println("constructor output");
}
static {
System.out.println("static 静态代码块输出");
}
static void method(){
System.out.println("static 方法输出");
}
public static void main(String[] args)
{
new test_static_constrcutor();
System.out.println('\n');
new test_static_constrcutor().method();
System.out.println('\n');
test_static_constrcutor t = new test_static_constrcutor();
t.method();
System.out.println('\n');
//new test();
System.out.println('\n');
new test().method();;
}
}
class test
{
test()
{
System.out.println("test constructor output");
}
static {
System.out.println(" test static 静态代码块输出");
}
static void method(){
System.out.println(" test static 方法输出");
}
}
运行结果如下: