国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 淺談Java中類的實例化步驟

淺談Java中類的實例化步驟

2021-07-17 12:02車到山前是死路 Java教程

今天小編就為大家分享一篇關于淺談Java中類的實例化步驟,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

就個人的一些看法簡單的 談談static

就java 工程師來說,static非常容易在面試的時候被問到。

言歸正傳,書面上說static是靜態的。其實我把它理解為“全局的”。什么叫全局的?全局的屬性,全局的方法,全局的代碼塊。

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

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

首先我們需要了解一下java虛擬機對類的加載過程。首先jvm會通過classloader將類的字節碼轉換成相應的class對象。其中classloader是雙親委托的方法來查找類文件的。

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

以下為網上找的一個經典的例子。

面試題目如下:請寫出程序執行完成之后的結果。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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");
}
}

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

  • 1.首先分析一段程序的執行后的結果,我們得先找到程序的入口,然后才能著手分析。也就是main()方法。
  • 2.我們發現main()方法在x類中,要執行main()方法,還得先將x類加載到內存中。
  • 3.x類加載完成后,會做什么事情呢?別急,先來看看static的作用,不知道吧。告訴你:static就是在類被第一次加載的時候執行,以后就不再執行。
  • 4.知道了static的作用,那么x類被加載,那么就會先執行x類的靜態屬性和靜態語句塊(static),執行先后順序看誰在前面就先執行誰。只在此時執行,以后都不會。
  • 5.所以一個輸出結果為tttt,沒問題了吧。
  • 6.x類的static語句塊執行完了,就該執行main()方法啦。
  • 7.new z();此方法被執行。
  • 8.既然new z();那么z類就要被加載。因為z類繼承x類。所以必須先加載x類才行。因為x類已經被加載。所以此時不用再加載x類了。z類加載好了就要執行z類的static語句塊
  • 9.那么就會打印出tt了吧。
  • 10.都加在完后就要實例化對象了。
  • 11.實例化z之前,還得先實例化x對吧。因為子類的構造方法都會調用父類的構造方法。
  • 12.那就先實例化x類吧。
  • 13.執行x方法前還得先初始化對不。也就是獲取所有屬性。那么x類的屬性y就會獲取。
  • 14.即x類的y y=new y();要被執行。也就是會打印y。
  • 15.接著執行system.out.println("x");
  • 16.然后就是執行z的構造方法
  • 17.同樣先獲取z的屬性y y=new y();打印y。
  • 18.再執行system.out.println("z");

整個過程就是這樣了。現在知道結果了吧:

tttt
tt
y
x
y
z

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:http://bbs.jfh.com/topic/20090

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 大桥未久亚洲精品久久久强制中出 | 二区视频 | 欧美精品1区2区3区 欧洲一区在线 | 国产精品久久久久国产a级 成人a在线视频 | 国产欧美精品区一区二区三区 | 色爱亚洲 | 色www精品视频在线观看 | 在线观看一区二区三区四区 | 青青草精品 | 欧美精品成人 | 欧美日韩在线播放 | 一区二区三区国产 | 亚洲视频免费看 | 一区二区三区日本 | 亚洲综合区 | 国产精品69毛片高清亚洲 | 国产伦精品一区二区三区四区视频 | 国产色综合视频 | 欧美日韩国产一区二区三区在线观看 | 亚洲一区二区免费视频 | 中文字幕在线观看日本 | 欧美日韩美女 | 日韩一区二区三区福利视频 | 在线观看欧美日韩 | 欧美激情一区二区三级高清视频 | 国产一区二区免费 | 久久精品一区二区 | www.fefe66.com | 色网站在线观看 | 国产精品亚洲精品 | 亚洲在线电影 | 日韩电影在线看 | 欧美日韩国产一级片 | 国产精品中文字幕在线 | 亚洲字幕 | 欧美日韩三区 | 亚洲一区二区在线免费观看 | 99久久久久久| 精品成人 | 亚洲欧美视频二区 | 一区视频|