在編譯生成class文件時(shí),會(huì)自動(dòng)產(chǎn)生兩個(gè)方法,一個(gè)是類的初始化方法<clinit>, 另一個(gè)是實(shí)例的初始化方法<init>。
- <clinit>:在jvm第一次加載class文件時(shí)調(diào)用,包括靜態(tài)變量初始化語句和靜態(tài)塊的執(zhí)行。
- <init>:在實(shí)例創(chuàng)建出來的時(shí)候調(diào)用,包括調(diào)用new操作符;調(diào)用Class或Java.lang.reflect.Constructor對(duì)象的newInstance()方法;調(diào)用任何現(xiàn)有對(duì)象的clone()方法;通過java.io.ObjectInputStream類的getObject()方法反序列化。

