闭关修行中......
找了半天也沒找到block的執行時間,後來用javap -c查看class檔案發現block被丟到構造器裡面了,並且invokespecial superclass的方法也在裡面,不過在block前面,這就解釋了你的問題了。
首先,使用javac指令編譯java類別後,該java類別的初始化程式碼區塊會消失-初始化程式碼區塊中的程式碼會被「還原」到每個構造器中,且位於構造器所有程式碼前面。
基本流程:
1.为要创建的对象分配内存空间,其大小取决于Java类及其父类和祖先类包含的所有实例域的数量和类型 2.如果内存分配成功(失败会抛出OutOfMemoryError错误),把新创建的对象的所有实例域(包括父类的)都设为默认值 3.调用构造方法 ①调用父类的构造方法,如果没有显式使用super关键字进行调用,则由编译器自动生成相关的代码 ②按照类中实例域的顺序初始化实例域的值 ③执行类的构造方法中的其他代码完成最终的初始化工作
具體你自己分析。
找了半天也沒找到block的執行時間,後來用javap -c查看class檔案發現block被丟到構造器裡面了,並且invokespecial superclass的方法也在裡面,不過在block前面,這就解釋了你的問題了。
首先,使用javac指令編譯java類別後,該java類別的初始化程式碼區塊會消失-初始化程式碼區塊中的程式碼會被「還原」到每個構造器中,且位於構造器所有程式碼前面。
基本流程:
具體你自己分析。