首先靜態(tài)代碼塊static{...}是在類被裝載的時(shí)候執(zhí)行,且只執(zhí)行一次;靜態(tài)代碼塊是在內(nèi)存中開(kāi)辟的一塊公共區(qū)域,類的多個(gè)實(shí)例共享的區(qū)域,任何該類的實(shí)例對(duì)該區(qū)域的操作都對(duì)所有所有該類的實(shí)例對(duì)該區(qū)域的操作都是生效的。
為長(zhǎng)寧等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及長(zhǎng)寧網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、長(zhǎng)寧網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
Java也是一樣,Java的.class字節(jié)碼文件要想執(zhí)行,首先也要加載到內(nèi)存,由類加載器把字節(jié)碼文件的代碼加載到內(nèi)存中,這一步就叫類加載,這是首先要進(jìn)行的。
用static修飾的代碼塊表示靜態(tài)代碼塊,當(dāng)Java虛擬機(jī)(JVM)加載類時(shí),就會(huì)執(zhí)行該代碼塊(用處非常大)。
兩者的區(qū)別就是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的;靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.靜態(tài)方法 (1)在Java里,可以定義一個(gè)不需要?jiǎng)?chuàng)建對(duì)象的方法,這種方法就是靜態(tài)方法。
構(gòu)造器的執(zhí)行順序是:靜態(tài)代碼塊→代碼塊→構(gòu)造器。再說(shuō)作用:靜態(tài)代碼塊是用于初始化類的(在加載類時(shí)執(zhí)行,只執(zhí)行一次),代碼塊是用于初始化對(duì)象的(在創(chuàng)建對(duì)象時(shí)執(zhí)行,每次創(chuàng)建對(duì)象時(shí)都執(zhí)行),構(gòu)造器是用于創(chuàng)建對(duì)象的。
靜態(tài)方法:需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,這種代碼是被動(dòng)執(zhí)行的(靜態(tài)方法在類加載的時(shí)候就已經(jīng)加載 可以用類名直接調(diào)用)。
1、構(gòu)造函數(shù):執(zhí)行時(shí)間比構(gòu)造代碼塊時(shí)間晚,也是在對(duì)象初始化的時(shí)候運(yùn)行。沒(méi)有返回值,構(gòu)造函數(shù)名稱和類名一致。構(gòu)造代碼塊:執(zhí)行時(shí)間比靜態(tài)代碼塊晚,比構(gòu)造函數(shù)早,和構(gòu)造函數(shù)一樣,只在對(duì)象初始化的時(shí)候運(yùn)行。
2、此時(shí)就會(huì)執(zhí)行靜態(tài)代碼塊,在創(chuàng)建對(duì)象時(shí),是先執(zhí)行代碼塊,然后執(zhí)行構(gòu)造器。所以靜態(tài)代碼塊、代碼塊、構(gòu)造器的執(zhí)行順序是:靜態(tài)代碼塊→代碼塊→構(gòu)造器。
3、靜態(tài)代碼塊:在java中使用static關(guān)鍵字聲明的代碼塊。靜態(tài)塊用于初始化類,為類的屬性初始化。每個(gè)靜態(tài)代碼塊只會(huì)執(zhí)行一次。由于JVM在加載類時(shí)會(huì)執(zhí)行靜態(tài)代碼塊,所以靜態(tài)代碼塊先于主方法執(zhí)行。
4、普通代碼塊:是最常見(jiàn)的代碼塊,在方法里用一對(duì)“{}”括起來(lái)的數(shù)據(jù),就是普通的代碼塊,構(gòu)造代碼塊:是在類中直接定義的,用“{}”括起來(lái)的代碼。每次調(diào)用構(gòu)造方法前執(zhí)行,都會(huì)先執(zhí)行構(gòu)造代碼塊。
構(gòu)造代碼塊:執(zhí)行時(shí)間比靜態(tài)代碼塊晚,比構(gòu)造函數(shù)早,和構(gòu)造函數(shù)一樣,只在對(duì)象初始化的時(shí)候運(yùn)行。沒(méi)有名字、參數(shù)和返回值。靜態(tài)代碼塊:最早執(zhí)行,類被載入內(nèi)存時(shí)執(zhí)行,只執(zhí)行一次。沒(méi)有名字、參數(shù)和返回值,有關(guān)鍵字static。
靜態(tài)代碼塊在類加載時(shí)執(zhí)行,用于初始化類的一些信息。構(gòu)造代碼塊在相應(yīng)構(gòu)造方法被調(diào)用時(shí)執(zhí)行,用于對(duì)象的初始化。
相同點(diǎn):每創(chuàng)建一個(gè)對(duì)象,構(gòu)造代碼塊和構(gòu)造函數(shù)都執(zhí)行一次,不同點(diǎn):執(zhí)行的順序不同,先執(zhí)行構(gòu)造代碼塊,再執(zhí)行構(gòu)造方法。
且在構(gòu)造函數(shù)主體代碼執(zhí)行之前被執(zhí)行。區(qū)別如下:執(zhí)行次數(shù)不同 靜態(tài)塊只執(zhí)行一次,初始化塊可以執(zhí)行多次。作用不同 靜態(tài)初始化塊僅能初始化類變量,即static修飾的數(shù)據(jù)成員。非靜態(tài)初始化塊可以初始化類的實(shí)例變量。
代碼塊有構(gòu)造代碼塊和靜態(tài)代碼塊,靜態(tài)代碼塊是類加載的時(shí)候執(zhí)行的,一共只執(zhí)行一次,構(gòu)造代碼塊是創(chuàng)建類對(duì)象的時(shí)候執(zhí)行的,創(chuàng)建一個(gè)對(duì)象執(zhí)行一次,代碼塊都是用于初始化的,而構(gòu)造函數(shù)是用于創(chuàng)建對(duì)象的。
分享題目:java中靜態(tài)塊和代碼塊 java靜態(tài)代碼塊和非靜態(tài)代碼塊
URL標(biāo)題:http://chinadenli.net/article42/dejeoec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、App設(shè)計(jì)、自適應(yīng)網(wǎng)站、外貿(mào)建站、微信小程序、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)