static{}和{}===静态模块和普通模块的理解
2020-05-12
遇到问题:
问题出现在:DaoFactory.java
理解:
区别:
静态代码块,在java虚拟机加载类的时候就会加载执行,而且只执行一次;
非静态代码块,在创建的时候(即new一个对象的时候)执行,每次创建对象都会执行一次
静态代码块与非静态代码块的异同点:
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
一般在代码块中对一些static变量进行赋值。.
另外static块中只能使用static修饰的属性。
程序中的static{}块只是为了加载properties文件信息,这个加载只会被加载一次。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
我看的参考是:https://www.cnblogs.com/lukelook/p/11183155.html
会当凌绝顶,一览众山小