Java语言中有两种代码块:普通代码块和静态代码块
- 普通代码块在对象被每次被创建的时候执行;
- 静态代码块在对象被首次载入内存的时候执行
例如以下代码:
package cn.com.infosec.test;
public class Test {
public static void main(String[] args) {
}
{
System.out.println("general block");
}
static{
System.out.println("static block");
}
}
直接执行的话只有static block输出。即只有静态代码块才执行。普通的代码块没有执行。
当在main方法中加入Test m = new Test();的时候,
package cn.com.infosec.test;
public class Test {
public static void main(String[] args) {
Test m = new Test();
}
{
System.out.println("general block");
}
static{
System.out.println("static block");
}
}
结果是
static block
general block
若再创建一次对象,则普通代码块会被再次执行,而静态代码块不会再被执行。
package cn.com.infosec.test;
public class Test {
public static void main(String[] args) {
Test m = new Test();
Test t = new Test();
}
{
System.out.println("general block");
}
static{
System.out.println("static block");
}
}
结果是
static block
general block
general block