相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个, 一般在代码块中对一些static变量进行赋值。 不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new 一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。 例: //普通类 public class PuTong { public PuTong(){ System.out.print("默认构造方法!-->"); } //非静态代码块 { System.out.print("非静态代码块!-->"); } //静态代码块 static{ System.out.print("静态代码块!-->"); } public static void test(){ { System.out.println("普通方法中的代码块!"); } } } //测试类 public class TestClass { /** * 区别两次new静态与非静态代码块执行情况 */ public static void main(String[] args) { PuTong c1 = new PuTong(); c1.test(); PuTong c2 = new PuTong(); c2.test(); } } /* 运行输出结果是: 静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块! 非静态代码块!-->默认构造方法!-->普通方法中的代码块! */
java 中静态代码和非静态代码块的区别!
最新推荐文章于 2022-05-03 18:57:20 发布