程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 學習之的對象初始化的講究

Java 學習之的對象初始化的講究

編輯:關於JAVA

 java在初始化的時候也有很多講究,因為java中出現了類,所以在初始化的時候就有可能使用到創建新對象,所以,對於初始化的順序要求的比較嚴格,請看下面一個程序,是thinking in Java中的一個程序,被我稍加改編,這樣可以更好的說明幾個初始化的要點:

  

  class Cup

  

  {

  

      Cup(int marker)

  

      {

  

         System.out.println("Cup(" + marker + ")");

  

      }

  

      void f(int marker)

  

      {

  

         System.out.println("f(" + marker + ")");

  

      }

  

  }

  

  class Cups

  

  {

  

      static Cup c1=new Cup(1);

  

      Cup c3=new Cup(3);

  

      static Cup c2= new Cup(2);

  

      Cups()

  

      {

  

         System.out.println("Cups()");

  

      }

  

      Cup c4=new Cup(4);

  

  }

  

  public class ExplicitStatic

  

  {

  

      Cups c=new Cups();

  

      {

  

         System.out.println("Hello");

  

      }

  

      public static void main(String[] args)

  

      {

  

         System.out.println("Inside main()");

  

         Cups.c1.f(99);

  

         ExplicitStatic x=new ExplicitStatic();

  

      }

  

      static Cups x = new Cups();

  

  }

  

  大家可以手動執行一下這個程序,考慮一下結果是什麼,然後參照下面的答案對照一下,看看是否正確:

  

  Cup(1)

  

  Cup(2)

  

  Cup(3)

  

  Cup(4)

  

  Cups()

  

  Inside main()

  

  f(99)

  

  Cup(3)

  

  Cup(4)

  

  Cups()

  

  Hello

  

  我總結了四個初始化的要點,如下:

  

  1、如果有static,即靜態成員定義,首先初始化static的變量,如,在類Cups中c3在c2前面,可是在輸出的結果中,你可以發現,c2是在c3前執行的,這就是因為,所有的static都在第一時間被初始化。

  

  2、Static只初始化一次,在第二次創建類的對象的時候,就不會去執行static的語句,如,在第二次執行new Cups()的時候,就只輸出了Cup(3)和Cup(4),顯然,static的兩個創建對象的語句沒有做。

  

  3、變量的初始化在方法前。如,在Cups類中,方法Cups()在語句Cup c4=new Cup(4)之前,可是輸出結果的時候,打印的Cups()卻在Cup(4)之後。

  

  4、在含有main的類中執行順序是先做static,然後就是main,而不是像其它類一樣,除了static就按順序做下來。如,在main函數中,如果去掉語句ExplicitStatic x=new ExplicitStatic(),則Cups c=new Cups()和System.out.println("hello")都不會執行。另外,留個小問題,如果去掉了System.out.println("hello")外的括號會怎麼樣呢?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved