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

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

深入理解Java初始化的含義

2019-11-18 13:34:03
字體:
來源:轉載
供稿:網友

  可以這樣認為,每個類都有一個名為Initialize()的方法,這個名字就暗示了它得在使用之前調用,不幸的是,這么做的話,用戶就得記住要調用這個方法,java類庫的設計者們可以通過一種被稱為構造函數的非凡方法,來保證每個對象都能得到被始化.假如類有構造函數,那么java就會在對象剛剛創建,用戶還來不及得到的時候,自動調用那個構造函數,這樣初始化就有保障了。

  我不知道原作者的描述和譯者的理解之間有多大的差異,結合全章,我沒有發現兩個最要害的字""和""。至少說明原作者和譯者并沒有真正說明JVM在初始化時做了什么,或者說并不了解JVM的初始化內幕,要不然明明有這兩個方法,卻為什么要認為有一個事實上并不存在的"Initialize()"方法呢?

  ""和""方法在哪里?這兩個方法是實際存在而你又找不到的方法,也許正是這樣才使得一些大師都犯暈。加上jdk實現上的一些BUG,假如沒有深入了解,真的讓人摸不著北。

  現在科學體系有一個希奇的現象,那么龐大的體系最初都是建立在一個假設的基礎是,假設1是正確的,由此推導出2,再繼續推導出10000000000??上У氖翘嗟娜烁静辉诤?-100000000000這樣的體系都是建立在假設1是正確的基礎上的。我并不會用“可以這樣認為”這樣的假設,我要確實證實""和""方法是真真實實的存在的:

package debug;
 public class MyTest{
  static int i = 100/0;
  public static void main(String[] args){
   Ssytem.out.  }
 }
  執行一下看看,這是jdk1.5的輸出:

java.lang.ExceptionInInitializerError
Caused by: java.lang.ArithmeticException: / by zero
at debug.MyTest.(Test.java:3)
Exception in thread "main"
  請注重,和其它方法調用時產生的異常一樣,異常被定位于debug.MyTest的.

  再來看:

package debug;
 public class Test {
  Test(){
   int i = 100 / 0;
  }
 public static void main(String[] args) {
  new Test();
 }
}
  jdk1.5輸入:

  Exception in thread "main" java.lang.ArithmeticException: / by zero

  at debug.Test.(Test.java:4)

  at debug.Test.main(Test.java:7)

  JVM并沒有把異常定位在Test()構造方法中,而是在debug.Test.。

  當我們看到了這兩個方法以后,我們再來具體討論這兩個“內置初始化方法”(我并不喜歡生造一些非標準的術語,但我確實不知道如何規范地稱呼他們)。

  內置初始化方法是JVM在內部專門用于初始化的特有方法,而不是提供給程序員調用的方法,事實上“<>”這樣的語法在源程序中你連編譯都無法通過。這就說明,初始化是由JVM控制而不是讓程序員來控制的。 三層交換技術 交換機與路由器密碼恢復 交換機的選購 路由器設置專題 路由故障處理手冊 數字化校園網解決方案


  類初始化方法:

  我沒有從任何地方了解到的cl是不是class的簡寫,但這個方法確實是用來對“類”進行初始化的。換句話說它是用來初始化static上下文的。

  在類裝載(load)時,JVM會調用內置的方法對類成員和靜態初始化塊進行初始化調用。它們的順序按照源文件的原文順序。

  我們稍微增加兩行static語句:

package debug;
public class Test {
 static int x = 0;
 static String s = "123";
 static {
  String s1 = "456";
  if(1==1)
  throw new RuntimeException();
 }
 public static void main(String[] args) {
  new Test();
 }
}
  然后進行反編譯:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 财经| 宜章县| 中牟县| 布拖县| 台南县| 阳春市| 巴林右旗| 太仆寺旗| 德州市| 香格里拉县| 泗阳县| 栾川县| 叙永县| 马边| 满洲里市| 赤峰市| 台东市| 玉溪市| 剑河县| 百色市| 丹寨县| 突泉县| 邵阳县| 舒兰市| 萨迦县| 怀宁县| 阜康市| 呼伦贝尔市| 宁陕县| 潞城市| 盱眙县| 西林县| 望江县| 井陉县| 延长县| 山阴县| 沈丘县| 平度市| 东丰县| 电白县| 荥经县|