国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java虛擬機(JVM)對象創建淺析

2019-11-18 10:46:36
字體:
來源:轉載
供稿:網友

  你認為java虛擬機什么時候會創建一個對象?假如能回答出下面的問題,你就可以不用繼續向下看了。
  
  class A{
  static final int a = 10;
  
  static{
  System.out.  }
  
  }
  
  class B{
  public static void main(String[] args){
  System.out.println(A.a);
  }
  
  static{
  System.out.println( "initializing B" );
  }
  }
  
  我們調用B的main函數,會得到什么輸出?
  
  經過考慮后,你是不是認為應該得到:
  
  "initializing B"
  "initializing A"
  10
  
  這個結果?不對,其實結果是:
  
  "initializing B"
  10
  
  嗯?A沒有被實例化?
  
  其實,java虛擬機會在6種情況下創建一個對象,分別是:
  
  ·創建類的新實例
  
  ·調用類中聲明的靜態方法
  
  ·操作類或接口中聲明的非常量靜態字段
  
  ·調用Java API中特定的反射方法
  
  ·初始化一個類的子類
  
  ·制定一個類作為Java虛擬機啟動時的初始化類
  
  java虛擬機只有在第一次主動使用一個類的情況下才會初始化該類。在以上6種情況下,虛擬機認為正在主動使用該類,所以會對其進行初始化,記住這6條,SCJP可能會出現(只是假如,可能考試不會涉及到虛擬機一層)
  
  順便說一下,任何一個類的初始化都要求它的所有祖先類(非祖先接口)預先被初始化,而接口的初始化則不需要祖先接口預先被初始化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏尼特右旗| 安顺市| 黎川县| 镇平县| 吉安县| 芮城县| 冕宁县| 汝阳县| 华安县| 宜黄县| 凤台县| 饶河县| 靖安县| 文水县| 荆州市| 定远县| 攀枝花市| 兰考县| 嘉义县| 保定市| 宜宾市| 延吉市| 裕民县| 万安县| 河池市| 定州市| 兴文县| 阿鲁科尔沁旗| 甘谷县| 河西区| 盈江县| 白玉县| 威远县| 荔浦县| 汾阳市| 新建县| 新泰市| 青州市| 南溪县| 肇庆市| 贵阳市|