Java中静态代码块,代码块,构造方法优先级、区别及代码示例
在项目中遇到了代码块的知识点,跑了下测试,写下结论
- 代码优先级:静态代码块 -> 构造代码块 -> 构造方法
- 多个代码块优先级,按照“先定义的代码先执行,后定义的代码后执行”原则执行
- 静态代码块只执行一次
- 构造代码块在类每次创建对象时都会执行
- 静态代码块不能存在于任何方法体内
1.测试一
1 public class CodeBlock01 { 2 { 3 System.out.println("普通代码块1"); 4 } 5 static { 6 System.out.println("静态代码块"); 7 } 8 9 public CodeBlock01() { 10 System.out.println("构造方法"); 11 } 12 13 { 14 System.out.println("普通代码块2"); 15 } 16 }
1 @Test public void testStaticCode(){ 2 new CodeBlock01(); 3 new CodeBlock01(); 4 }
执行结果:
静态代码块
普通代码块1
普通代码块2
构造方法
普通代码块1
普通代码块2
构造方法
结论:
- 优先级:静态代码块 -> 代码块 -> 构造方法
- 静态代码块只会执行一次
- 代码块会在类每次创建对象的时候都创建,就是每次构造方法前都会执行
2.测试二
1 public class CodeBlock02 { 2 { 3 System.out.println("普通代码块01"); 4 } 5 6 { 7 System.out.println("普通代码块02"); 8 } 9 10 public CodeBlock02(){ 11 System.out.println("构造方法"); 12 } 13 }
1 @Test public void testCodeBlock(){ 2 new CodeBlock02(); 3 }
执行结果:
普通代码块01
普通代码块02
构造方法
结论:
代码块执行顺序,按照“先定义的代码先执行,后定义的代码后执行”原则。
直面挑战,躬身入局