/*
静态代码块
格式:
static
{
静态代码块中的执行语句
}
特点:随着类的加载而执行,只执行一次。
用于给类进行初始化的。
*/
class StaticCode
{
static
{
System.out.println("a");
}
}
class StaticCodeDemo
{
static
{
System.out.println("b");
}
public static void main(String[] args)
{
new StaticCode();
new StaticCode();
System.out.println("over");
}
static
{
System.out.println("c");
}
}
输出:b c a over
------------------------------------------
class StaticCode
{
static
{
System.out.println("a");
}
public static void show()
{
System.out.println("show run");
}
}
class StaticCodeDemo
{
public static void main(String[] args)
{
StaticCode.show(); //类名调用静态方法,输出:a show run
StaticCode s = null;//无输出结果
}
}
------------------------------------------
class StaticCode
{
int num = 9;
StaticCode()
{
System.out.println("b");//不会打印,没有与之对应的对象
}
static //静态代码块给类初始化
{
System.out.println("a"+num);//+num会报错,静态不能调用非静态
}
{
System.out.println("c"+num);//构造代码块给对象初始化,可以+num(即+this.num)
}
StaticCode(int x)//构造函数给对应对象初始化
{
System.out.println("d");
}
public static void show()
{
System.out.println("show run");
}
}
class StaticCodeDemo
{
public static void main(String[] args)
{
new StaticCode(4);
}
}
//输出:a c d
----------------------------------------------------------------------------------
个人总结:静态代码块给类初始化,构造代码块给对象初始化,构造函数给对应对象初始化