JAVA 全局變量 聲明與定義

JAVA全局變量(或稱成員變量)可分兩種,一種是靜態變量,另一種是實例變量,即在類體中定義的變量,有三點得注意: 
一、成員變量不能在類體中先聲明(定義)後賦值,但靜態變量可以先在類體中聲明,然後在方法中賦值(當然實例變量是不行的);  1)如以下程序會出問題:

public class Test {

   static int a;        //在類體中聲明整型靜態變量a。

   int  b;                //在類體中聲明整型實體變量b。

  a=3;                 //在類體中對靜態變量a賦初值。

  b=5;                //在類體中對實體變量b賦初值。

        public static void main(String[] args) {

             System.out.println("a+b="+(a+b));

             }

}


java中全局變量爲什麼不能先聲明再賦值?

public class Test{
    int b;
    b=5;
}


爲什麼這種先聲明後賦值是錯誤?什麼機制導致的? 
那是因爲 i=3這是賦值語句,不能單獨出現在方法或{}以外的地方 
改成

public class Test{
  int i;
  {i = 3;} //寫在{}裏就可以了(這種代碼塊優先於構造方法執行)
}


 2)以下程序可以運行:

public class Test {

 static   int a;        //在類體中聲明整型靜態變量a。

        public static void main(String[] args) {

              a=3;                 //在方法中對靜態變量a賦值。

             System.out.println("a="+a);

             }

}


  3)以下程序也不可以運行,會報錯:

public class hello {

    int a;        //在類體中聲明整型實體變量a。

        public static void main(String[] args) {

              a=3;                 //在方法中對實體變量a賦值。

             System.out.println("a="+a);

             }

}


二、成員變量可以在類體中聲明同時進行賦值,如 靜態變量:static int a=3; 實例變量:int b=5; 
如:

public class Test {

   static int a=3;        //在類體中聲明整型靜態變量a並賦初值。

   int  b=5;                //在類體中聲明整型實體變量b並賦初值。

          public static void main(String[] args) {

             System.out.println("a+b="+(a+b));

             }

}


三、所有變量(包括成員變量)均不能以這種形式聲明並賦值變量(無論在類體中還是在方法

int a=b=3;  
譯系統認爲 b 沒有被聲明何種數據類型。

還有,在數據類型轉換上,有隱式轉換和顯式轉換(即強制類型轉換),隱式轉換隻能從高字節的數據類型向低字節的數據類型轉換,這樣不會丟失原有數據的精確度,如果要將變量從低字節的數據類型轉換成高字節的數據類型,只能使用顯式轉換。如下:

short a=3;  
int b=65537;
a=b;


則程序會報錯。

而這樣:a=(short)b

就不會報錯了。但有時會失去數據原有的精確性。如上,則a=1; 因爲a被b以低16位的位值賦值了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章