聲明變量的語(yǔ)法格式為:數(shù)據(jù)類(lèi)型 變量名; //例如:int i;
數(shù)據(jù)類(lèi)型我們?cè)谙乱徽鹿?jié)會(huì)詳細(xì)講解,目前我們以“int”類(lèi)型為例,int表示整數(shù)類(lèi)型(注意:int是關(guān)鍵字,不能隨意寫(xiě),必須全部小寫(xiě))。變量名只要符合標(biāo)識(shí)符命名規(guī)則即可,當(dāng)然也要見(jiàn)名知意,命名規(guī)范中還要求變量名首字母小寫(xiě),后面每個(gè)單詞首字母大寫(xiě)。例如以下代碼:
public class VarTest01 {
public static void main(String[] args) {
int age; //年齡
}
}
這個(gè)age變量可以訪問(wèn)嗎,我們來(lái)試一下,請(qǐng)看代碼:
public class VarTest01 {
public static void main(String[] args) {
int age;
System.out.println(age);
}
}
編譯報(bào)錯(cuò)了,請(qǐng)看下圖:
圖3-3:編譯錯(cuò)誤提示信息
以上編譯錯(cuò)誤信息為:可能尚未初始化變量age,這句話的意思是age變量還沒(méi)有賦值,也就是說(shuō)變量age中還沒(méi)有數(shù)據(jù),空間還沒(méi)有開(kāi)辟出來(lái),可見(jiàn),java語(yǔ)言中的變量必須先聲明,再賦值才能訪問(wèn)。那么java語(yǔ)言中怎么給變量賦值呢?請(qǐng)看賦值的語(yǔ)法格式:變量名 = 字面量; //字面量就是值
語(yǔ)法中要求“字面量”和“變量的數(shù)據(jù)類(lèi)型”一致,不然會(huì)出現(xiàn)類(lèi)型不兼容的錯(cuò)誤信息。以上語(yǔ)法當(dāng)中的“=”是一種運(yùn)算符,它被稱(chēng)為賦值運(yùn)算符,賦值運(yùn)算符右邊的表達(dá)式優(yōu)先級(jí)較高,也就是說(shuō)等號(hào)右邊先執(zhí)行,將執(zhí)行結(jié)果賦給左邊的變量。(注意:java語(yǔ)言中的單等號(hào)不是用來(lái)判斷是否相等的,是為了完成賦值運(yùn)算。)
接下來(lái)我們來(lái)修改一下以上錯(cuò)誤的代碼,讓其編譯通過(guò)并能夠運(yùn)行:
public class VarTest01 {
public static void main(String[] args) {
int age;
age = 20;
System.out.println(age);
}
}
運(yùn)行的結(jié)果是在控制臺(tái)輸出了:20
變量賦值之后可以重新賦值嗎?當(dāng)然可以,要不然怎么能叫變量呢。請(qǐng)看:
public class VarTest01 {
public static void main(String[] args) {
int age;
age = 20;
System.out.println(age);
age = 30;
System.out.println(age);
}
}
重新賦值之后,再次輸出到控制臺(tái),結(jié)果是:30
變量的聲明和賦值可以在一行代碼上完成嗎?可以的,請(qǐng)看代碼:
public class VarTest02 {
public static void main(String[] args) {
//聲明一個(gè)int類(lèi)型的變量count,賦值15
//聲明和賦值一氣呵成
int count = 15;
System.out.println(count);
//重新賦值
count = 18;
System.out.println(count);
}
}
在一行上可以同時(shí)聲明多個(gè)變量嗎?可以的,請(qǐng)看代碼:
public class VarTest03 {
public static void main(String[] args) {
int a, b , c = 300;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
編譯出錯(cuò)了,請(qǐng)看下圖:
圖3-4:編譯錯(cuò)誤提示信息
根據(jù)以上錯(cuò)誤提示信息得知,int a , b , c = 300表示聲明3個(gè)int類(lèi)型變量,分別起名a,b,c,其中a和b沒(méi)有賦值,c賦值300。這一點(diǎn)大家需要注意:這行代碼并不代表給3個(gè)變量全部賦值300哦!要想讓以上代碼編譯通過(guò),在訪問(wèn)變量之前賦上值就行了,可以這樣修改:
public class VarTest03 {
public static void main(String[] args) {
int a, b , c = 300;
a = 90;
System.out.println(a);
b = 88;
System.out.println(b);
System.out.println(c);
}
}
在同一個(gè)大括號(hào)當(dāng)中,可以聲明兩個(gè)同名的變量嗎?不可以的,在同一個(gè)大括號(hào)當(dāng)中表示在內(nèi)存的同一個(gè)域當(dāng)中,在同一塊區(qū)域上面有兩個(gè)名字都叫做a的變量,這是不允許的,因?yàn)檫@樣程序在運(yùn)行的時(shí)候,java虛擬機(jī)也不知道該訪問(wèn)哪個(gè)變量了(好比說(shuō),你有兩個(gè)朋友,他們的倆的名字都叫張三,當(dāng)你們?nèi)齻€(gè)人同時(shí)在場(chǎng)的時(shí)候,你呼張三,其實(shí)他倆也不知道你喊誰(shuí)呢!)。所以,同一個(gè)域中變量名不能重名,但是記住:變量是可以重新賦值的。請(qǐng)看以下程序以及編譯錯(cuò)誤提示信息:
public class VarTest03 {
public static void main(String[] args) {
int a = 10;
int a = 100;
}
}
編譯錯(cuò)誤提示信息:
圖3-5:編譯錯(cuò)誤提示信息