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