静态代码块与非静态代码块形式如下:
//静态代码块用static 修饰,把代码写在{}中
static{
// code
}
// 非静态代码块将代码直接写在{}中
{
// code
}
主要区别:
静态代码块属于类,无论创建多少个对象,只加载一次;而非静态代码块属于对象,每创建一个对象,就执行一次。
For example:
public classText{
static {
System.out.println("static code block");
}
{
System.out.println("Not static code block");
}
public static void main(String [] args){
new Test(); // 创建第一个对象实例
new Test(); // 创建第二个对象实例
}
}
输出结果为:
static code block //首次加载时执行静态代码块内容
Not static code block //每创建一个对象时执行非静态代码块内容
Not static code block //每创建一个对象时执行非静态代码块内容