Java中類程式碼載入的順序詳解
程式輸出結果如下圖:<span style="font-size:14px;">class GrandPa { public String grandpaName="grandpaName1"; //例項變數 public static int grandpaAge = 1; //靜態變數 //靜態程式碼塊 static { System.out.println("in staticBlock:grandpaName can not be visited"+" grandpaAge="+grandpaAge); System.out.println("this is grandpa's staticBlock"); grandpaAge = 2; } //構造程式碼塊 { System.out.println("in struBlock:grandpaName="+grandpaName+" grandpaAge="+grandpaAge); System.out.println("this is grandpa's struBlock"); grandpaName = "grandpaName3"; grandpaAge = 3; } //建構函式 public GrandPa(){ System.out.println("in struFunction:grandpaName="+grandpaName+" grandpaAge="+grandpaAge); grandpaName = "grandpaName4"; grandpaAge = 4; } //例項函式 //例項函式不影響類載入流程,寫出來是為了檢視最終一些變數的值 public void grandpaShow(){ System.out.println("finally:"+grandpaName+" grandpaAge="+grandpaAge); } } class Father extends GrandPa { public String fatherName="fatherName1"; //例項變數 public static int fatherAge = 1; //靜態變數 //靜態程式碼塊 static { System.out.println("in staticBlock:fatherName can not be visited"+" fatherAge="+fatherAge); System.out.println("this is father's staticBlock"); fatherAge = 2; } //構造程式碼塊 { System.out.println("in struBlock:fatherName="+fatherName+" fatherAge="+fatherAge); System.out.println("this is father's struBlock"); fatherName = "fatherName3"; fatherAge = 3; } //建構函式 public Father(){ System.out.println("in struFunction:fatherName="+fatherName+" fatherAge="+fatherAge); fatherName = "fatherName4"; fatherAge = 4; } //例項函式 //例項函式不影響類載入流程,寫出來是為了檢視最終一些變數的值 public void fatherShow(){ System.out.println("finally:"+fatherName+" fatherAge="+fatherAge); } } class Son extends Father { public String sonName="sonName1"; //例項變數 public static int sonAge = 1; //靜態變數 //靜態程式碼塊 static { System.out.println("in staticBlock:sonName can not be visited"+" sonAge="+sonAge); System.out.println("this is Son's staticBlock"); sonAge = 2; } //構造程式碼塊 { System.out.println("in struBlock:sonName="+sonName+" sonAge="+sonAge); System.out.println("this is Son's struBlock"); sonName = "sonName3"; sonAge = 3; } //建構函式 public Son(){ System.out.println("in struFunction:sonName="+sonName+" sonAge="+sonAge); sonName = "sonName4"; sonAge = 4; } //例項函式 //例項函式不影響類載入流程,寫出來是為了檢視最終一些變數的值 public void sonShow(){ grandpaShow(); fatherShow(); System.out.println("finally:"+sonName+" sonAge="+sonAge); } //靜態函式 //靜態函式沒必要寫,不影響類載入流程 //主函式 public static void main(String[] args){ Son son = new Son(); son.sonShow(); } }</span>
相關推薦
Java中類程式碼載入的順序詳解
<span style="font-size:14px;">class GrandPa { public String grandpaName="grandpaName1"; //例項變數 public static int grandpaAge = 1; //靜態變數 //靜態程式碼塊
面試題--JAVA中靜態塊、靜態變數載入順序詳解
public class test { //1.第一步,準備載入類 public static void main(String[] args)
Java中的異常和處理詳解
stat 一個 局部變量 lose 出了 object sta tof .html 原文出處:代碼鋼琴家 簡介 程序運行時,發生的不被期望的事件,它阻止了程序按照程序員的預期正常執行,這就是異常。異常發生時,是任程序自生自滅,立刻退出終止,還是輸出錯誤給用戶?或者用C語
Java中==和equals和區別詳解+案例
兩個 布爾型 整數 返回 boolean 和equal clas 定義 true 一開始遇見==和equals我也是分不清,後來看了很多博客,收益匪淺, 擔心以後給忘了,所以寫下這個,以後復習可以用。 (有哪裏寫得不對的,希望可以留言幫忙改進,大家一起共同進步) 一、Jav
java中==和equals的區別詳解
字符 blog 的區別 代碼塊 數組 sss oss 兩種 內存劃分 分析前基礎了解: 一)JVM把內存劃分成兩種:一種是棧內存,一種是堆內存。 ①在函數中定義的一些基本類型的變量和對象的引用變量(變量名)都在函數的棧內存中分配。 ②當在一段代碼塊定義一個變量時
HTTP協議報文、工作原理及Java中的HTTP通訊技術詳解
一、web及網路基礎 1、HTTP的歷史 1.1、HTTP的概念: &nb
類自動載入方法詳解
在瞭解這個函式之前先來看另一個函式:__autoload。 一、__autoload 這是一個自動載入函式,在PHP5中,當我們例項化一個未定義的類時,就會觸發此函式。看下面例子: printit.class.php <?php class PRINTIT { function do
Java 中的異常和處理詳解
原文出處: 程式碼鋼琴家 簡介 程式執行時,發生的不被期望的事件,它阻止了程式按照程式設計師的預期正常執行,這就是異常。異常發生時,是任程式自生自滅,立刻退出終止,還是輸出錯誤給使用者?或者用C語言風格:用函式返回值作為執行狀態?。 Java提供了更加優秀的
Spring Boot 配置載入順序詳解
使用 Spring Boot 會涉及到各種各樣的配置,如開發、測試、線上就至少 3 套配置資訊了。Spring Boot 可以輕鬆的幫助我們使用相同的程式碼就能使開發、測試、線上環境使用不同的配置。 在 Spring Boot 裡面,可以使用以下幾種方式來載入配置。本章
Java中的Iterable與Iterator詳解
在Java中,我們可以對List集合進行如下幾種方式的遍歷: List<Integer> list = new ArrayList<>(); list.add(5); list.add(23); list.add(42); for (int i = 0; i < list.siz
Java中的IO流的詳解
在介紹IO流之前,需要首先給大家介紹一下File的使用,及一些常用的方法。 File類 :檔案和目錄路徑名的抽象表示形式。 通俗一點說,例項化File類的一個物件,其傳入的引數就是一個路徑名(可以是絕對路徑名,也可以是相對路徑名) 例:File file=new
java String 類的equals方法 詳解
equals 方法的程式碼如下所示: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String)
Java I/O : Java中的進位制詳解
作者:李強強 上一篇,泥瓦匠基礎地講了下Java I/O : Bit Operation 位運算。這一講,泥瓦匠帶你走進Java中的進位制詳解。 一、引子 在Java世界裡,99%的工作都是處理這高層。那麼二進位制,位元組碼這些會在哪裡用到呢? 自問自答:在跨平臺的時候,就凸顯神功了。比如說檔
Java中 ( Iterator ) 迭代器 詳解 ( JDK8原始碼 )
Java集合框架的集合類,我們有時候稱之為容器。容器的種類有很多種,比如ArrayList、LinkedList、HashSet...,每種容器都有自己的特點,ArrayList底層維護的是一個數組;LinkedList是連結串列結構的;HashSet依賴的是雜湊表,每種容器都有自己特有的資料結構。
Java中 Cloneable 、Serializable 介面詳解
Cloneable介面 clone:它允許在堆中克隆出一塊和原物件一樣的物件,並將這個物件的地址賦予新的引用。 Java 中 一個類要實現clone功能 必須實現 Cloneable介面,否則在呼叫 clone() 時會報 CloneNotSupported
Java中NullPointerException異常的原因詳解以及解決方法
NullPointerException是當您嘗試使用指向記憶體中空位置的引用(null)時發生的異常,就好像它引用了一個物件一樣。 當我們宣告引用變數(即物件)時,實際上是在建立指向物件的指標。考慮以下程式碼,您可以在其中宣告基本型別的整型變數x: int x; x = 10; 在
Java中compareTo()方法比較字串詳解
中心:String 是字串,它的比較用compareTo方法,它從第一位開始比較, 如果遇到不同的字元,則馬上返回這兩個字元的ascii值差值.返回值是int型別 1.當兩個比較的字串是英文且長度不等時, 1)長度短的與長度長的字元一樣,則返回的結果是兩個長度相減的值a="hello";b
【搞定Java併發程式設計】第22篇:Java中的阻塞佇列 BlockingQueue 詳解
上一篇:Java併發容器之ConcurrentHashMap詳解 本文目錄: 1、阻塞佇列的基本概念 2、ArrayBlockingQueue 2.1、ArrayBlockingQueue的基本使用 2.2、ArrayBlockingQueue原理概要 2.3、ArrayBl
【搞定Java併發程式設計】第28篇:Java中的執行緒池詳解
上一篇:Java中的併發工具類之執行緒間交換資料的 Exchanger 本文目錄: 1、執行緒池的實現原理 2、執行緒池的使用 2.1、執行緒池的建立 2.2、向執行緒池提交任務 2.3、關閉執行緒池 2.4、合理地配置執行緒池 2.5、執行緒池的監控
java 中ClassLoader 的載入順序
原文引自:http://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html 當JVM(Java虛擬機器)啟動時,會形成由三個類載入器組成的初始類載入器層次結構: