欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Java培訓(xùn)之類的實例化步驟詳解

2019-02-25 19:22:34 1757瀏覽

今天扣丁學(xué)堂Java培訓(xùn)老師給大家介紹一下關(guān)于淺談Java中類的實例化步驟的詳解,希望對同學(xué)們學(xué)習(xí)java開發(fā)有所幫助,首先對于java工程師來說,static非常容易在面試的時候被問到。書面上說static是靜態(tài)的。其實我把它理解為“全局的”。什么叫全局的?全局的屬性,全局的方法,全局的代碼塊。



全局屬性,全局方法,比較好理解就是這個類所有的對象都共有的屬性和方法。因為是整個類共有的,所以可以通過聲明直接調(diào)用。我把它理解為“單例模式”的屬性和方法。所謂單例模式就是指這個類聲明的所有對象共享這些屬性和方法。一個對象對這個屬性進(jìn)行了修改,所有對象再調(diào)這個屬性都是修改后的值了。

下面主要說一下static修飾的代碼塊,面試的一大考點就是static代碼塊是什么時候被加載的。

首先我們需要了解一下java虛擬機(jī)對類的加載過程。首先JVM會通過classloader將類的字節(jié)碼轉(zhuǎn)換成相應(yīng)的Class對象。其中classloader是雙親委托的方法來查找類文件的。

就是首先委托父類的classloader查找(父類也有父類就交由父類的父類查找以此類推,直到不再繼承別的classloader的類),如果查找不到再由自己來查找。如果自己也找不到就拋出異常。以上是準(zhǔn)備工作,當(dāng)這個類抽次被使用,我們會顯出石化這個類(如果有父類就先初始化他的父類),在初始化的過程中我們會處理static修飾的代碼。就是我們這里要說的static代碼塊。每個類知會初始化1次。(我們可以通過改變方法Class.forName()中的第二個參數(shù)來控制是否初始化一個類)。

以下為網(wǎng)上找的一個經(jīng)典的例子。

面試題目如下:請寫出程序執(zhí)行完成之后的結(jié)果。

package extend; 
public class X { 
Y y=new Y(); 
static{ 
 System.out.println("tttt"); 
} 
X(){ 
 System.out.println("X"); 
} 
public static void main(String[] args) { 
  new Z(); 
} 
} 
class Y{ 
Y(){ 
 System.out.println("Y"); 
} 
} 
class Z extends X{ 
Y y=new Y(); 
static{ 
 System.out.println("tt"); 
} 
Z(){ 
 System.out.println("Z"); 
} 
}

先不告訴最后結(jié)果,我們先來分析下。一步一步推出結(jié)果。

1.首先分析一段程序的執(zhí)行后的結(jié)果,我們得先找到程序的入口,然后才能著手分析。也就是main()方法。

2.我們發(fā)現(xiàn)main()方法在X類中,要執(zhí)行main()方法,還得先將X類加載到內(nèi)存中。

3.X類加載完成后,會做什么事情呢?別急,先來看看static的作用,不知道吧。告訴你:static就是在類被第一次加載的時候執(zhí)行,以后就不再執(zhí)行。

4.知道了static的作用,那么X類被加載,那么就會先執(zhí)行X類的靜態(tài)屬性和靜態(tài)語句塊(static),執(zhí)行先后順序看誰在前面就先執(zhí)行誰。只在此時執(zhí)行,以后都不會。

5.所以一個輸出結(jié)果為tttt,沒問題了吧。

6.X類的static語句塊執(zhí)行完了,就該執(zhí)行main()方法啦。

7.newZ();此方法被執(zhí)行。

8.既然newZ();那么Z類就要被加載。因為Z類繼承X類。所以必須先加載X類才行。因為X類已經(jīng)被加載。所以此時不用再加載X類了。Z類加載好了就要執(zhí)行Z類的static語句塊

9.那么就會打印出tt了吧。

10.都加在完后就要實例化對象了。

11.實例化Z之前,還得先實例化X對吧。因為子類的構(gòu)造方法都會調(diào)用父類的構(gòu)造方法。

12.那就先實例化X類吧。

13.執(zhí)行X方法前還得先初始化對不。也就是獲取所有屬性。那么X類的屬性Y就會獲取。

14.即X類的Yy=newY();要被執(zhí)行。也就是會打印Y。

15.接著執(zhí)行System.out.println("X");

16.然后就是執(zhí)行Z的構(gòu)造方法

17.同樣先獲取Z的屬性Yy=newY();打印Y。

18.再執(zhí)行System.out.println("Z");

整個過程就是這樣了。現(xiàn)在知道結(jié)果了吧:

tttt 
tt 
Y 
X 
Y 
Z

記住,面試有可能會標(biāo)出一些語句的,讓你選擇這些語句的執(zhí)行順序。不過只要知道原理,就沒什么難的了。

以上就是關(guān)于扣丁學(xué)堂Java培訓(xùn)之類的實例化步驟詳解的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,最后想要了解更多請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺不僅為您提供權(quán)威的Java視頻教程供大家學(xué)習(xí),還精心的準(zhǔn)備了Java從入門到精通開發(fā)實戰(zhàn)技能,定能讓你學(xué)有所成??鄱W(xué)堂Java技術(shù)交流群:670348138。


扣丁學(xué)堂微信公眾號


【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】


查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部