今天就跟大家聊聊有關(guān)init與clinit在Java中有什么不同,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)公司成立10多年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計、空間域名、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。網(wǎng)站是否美觀、功能強大、用戶體驗好、性價比高、打開快等等,這些對于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)公司通過對建站技術(shù)性的掌握、對創(chuàng)意設(shè)計的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。init和clinit區(qū)別
①init和clinit方法執(zhí)行時機不同
init是對象構(gòu)造器方法,也就是說在程序執(zhí)行 new 一個對象調(diào)用該對象類的 constructor 方法時才會執(zhí)行init方法,而clinit是類構(gòu)造器方法,也就是在jvm進行類加載—–驗證—-解析—–初始化,中的初始化階段jvm會調(diào)用clinit方法。
②init和clinit方法執(zhí)行目的不同
init is the (or one of the) constructor(s) for the instance, and non-static field initialization.
clinit are the static initialization blocks for the class, and static field initialization.
上面這兩句是Stack Overflow上的解析,很清楚init是instance實例構(gòu)造器,對非靜態(tài)變量解析初始化,而clinit是class類構(gòu)造器對靜態(tài)變量,靜態(tài)代碼塊進行初始化??纯聪旅娴倪@段程序就很清楚了。
class X { static Log log = LogFactory.getLog(); //private int x = 1; // X(){ // } static { // } }