更新時間:2020-06-19 13:44:08 來源:動力節點 瀏覽2521次
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;
1
譯系統認為 b 沒有被聲明何種數據類型。
還有,在數據類型轉換上,有隱式轉換和顯式轉換(即強制類型轉換),隱式轉換只能從高字節的數據類型向低字節的數據類型轉換,這樣不會丟失原有數據的精確度,如果要將變量從低字節的數據類型轉換成高字節的數據類型,只能使用顯式轉換。如下:
short a=3;
int b=65537;
a=b;
則程序會報錯。
而這樣:a=(short)b
就不會報錯了。但有時會失去數據原有的精確性。如上,則a=1; 因為a被b以低16位的位值賦值了。
以上就是動力節點java培訓機構的小編針對“編程基礎,Java全局變量之聲明與定義”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習