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