static{}和{}===静态模块和普通模块的理解

2020-05-12

遇到问题:

  问题出现在:DaoFactory.java

理解:

  区别:

  静态代码块,在java虚拟机加载类的时候就会加载执行,而且只执行一次;

  非静态代码块,在创建的时候(即new一个对象的时候)执行,每次创建对象都会执行一次

静态代码块与非静态代码块的异同点:

相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,

    一般在代码块中对一些static变量进行赋值。.    

    另外static块中只能使用static修饰的属性。

    程序中的static{}块只是为了加载properties文件信息,这个加载只会被加载一次。

不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。

    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new

    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。

我看的参考是:https://www.cnblogs.com/lukelook/p/11183155.html

会当凌绝顶,一览众山小
原文地址:https://www.cnblogs.com/quenvpengyou/p/12878719.html