參考鏈接: Java中的變量范圍
在程序中存在大量的數據來代表程序的狀態,其中有些數據在程序的運行過程中值會發生改變,有些數據在程序運行過程中值不能發生改變,這些數據在程序中分別被叫做變量和常量。?
在實際的程序中,可以根據數據在程序運行中是否發生改變,來選擇應該是使用變量代表還是常量代表。?
??
變量?
在程序執行的過程中,在某個范圍內其值可以發生改變的量就是變量。?
將內存中的某個內存塊保留下來以供程序使用,里面的內容是可變的。?
變量的作用域:?
作用域從變量定義的位置開始,到該變量所在的那對大括號結束。?
或者可以說變量定義在哪一級大括號中,哪個大括號的范圍就是這個變量的作用域。?
變量的生命周期:?
變量從定義的位置開始就在內存中活了;?
變量到達它所在的作用域的時候就在內存中消失了。?
什么時候定義變量??
只要是數據不確定的時候,就定義變量。?
變量空間的開辟需要什么要素??
1)這個空間要存儲什么數據?數據類型。?
2)這個空間叫什么名字?變量名稱。?
3)這個空間的第一次的數據是什么? 變量的初始化值。?
??
聲明變量?
由于Java語言是一種強類型的語言,所以變量在使用以前必須首先聲明,在程序中聲明變量的語法格式如下:?
? ? ? ? ? ?數據類型 變量名稱;?
數據類型和變量名稱之間使用空格進行間隔(空格的個數不限,但是至少需要一個),聲明語句使用“;”作為結束。也可以在聲明變量的同時,設定該變量的值,語法格式如下:?
? ? ? ? ? ?數據類型 變量名稱 = 值;?
?在程序中,變量的值代表程序的狀態,在程序中可以通過變量名稱來引用變量中存儲的值,也可以為變量重新賦值。?
int a = 10; // 聲明并初始化a
a = 20;? // 重新給變量a賦值?
當需要聲明多個同類型的變量時,我們還可以使用如下格式:?
? ? ? ? ? 數據類型 變量名稱1 = 值1,變量名稱2 = 值2,……變量名稱n = 值n;?
int a, b, c; // 聲明三個int型整數:a、 b、c
int d = 3, e = 4, f = 5; // 聲明三個整數并賦予初值?
在實際開發過程中,需要聲明什么類型的變量,需要聲明多少個變量,需要為變量賦什么數值,都需要根據程序邏輯決定,這里列舉的只是表達的格式而已。?
??
注意:?
1)相同的作用域中不能定義兩個同名變量。?
2)java 中的每個變量必須先聲明,后使用。?
3)在一行上可以定義多個變量,但建議只定義一個變量。?
4)變量一次只能賦一個值,但可以修改多次?
??
常量?
常量代表程序執行過程中不能改變的數據。?
我們可以把它理解成一種特殊的變量,只不過它的值被設定后,在程序運行過程中不允許被改變。?
常量在程序運行過程中主要作用:?
1)代表常數,便于程序的修改(例如:圓周率的值)?
2)增強程序的可讀性(例如:常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其數值分別是1、2、3和4)?
3)提高代碼的可維護性。例如,在項目開發時需要指定用戶的性別,此時可以定義一個常量 SEX,賦值為 "男",在需要指定用戶性別的地方直接調用此常量即可,避免了由于用戶的不規范賦值導致程序出錯的情況。?
??
常量分類:字面值常量 和 自定義常量?
字面值常量?
之所以稱之為字面值是因為只能用它的值來稱呼它,稱之為常量是因為它的值不能修改。?
只有內置類型存在字面值,沒有類類型的字面值。因此,也沒有任何標準庫類型的字面值。?
對于字面值常量我們分為以下五種:?
類別示例說明整型10、12主要是有進制的區別,默認是十進制,當表示二進制時用0b10(表示二進制用0b或0B愛投)、010(表示八進制用0開頭)、0x10(表示十六進制用0x或0X開頭)浮點型3.1415浮點字面值常量當沒有任何的標志時會存儲成double類型,當要使用float類型時,可在后面加上f或F,例如3.14f 表示該數為float類型字符型‘c’、’1’用兩個單引號括起來,一個字符占2byte。如’A’、’b’ 、’\t’字符串型“changliang”該類型不是基本數據類型,在Java中被稱為引用數據類型布爾型true、false只有這兩個值
注意:?
1)默認情況下,整形字面值是int類型,如果要表示一個long類型的常量,就要在整數的后面加上l或L。例如10L,342L。?
2)byte和short沒有常量形式。他們都是接收一個不超過他們取值范圍的int常量(隱式轉換);如果這個int常量超過了他們的取值范圍必須使用強制轉換。?
3)從JDK7開始,可以在整數或浮點數字面值中嵌入一個或多個下劃線,以方便閱讀。例如:129_51_782。?
轉義字符?
Java中允許使用轉義字符‘\’來將其后的字符轉變為特殊字符型常量。?
?轉義字符? 描述? 轉義字符? 描述? 轉義字符? 描述? \f? 換頁? \\? 反斜線? \b? 倒退一格? \’? 單引號? \r? 歸位? \n? 換行? \”? 雙引號? \t? 制表符Tab? ? ? ?
public class Test {
? ? public static void main(String[] args) {
? ? ? ? char ch1 = '\"'; // 定義轉義字符
? ? ? ? char ch2 = '\\'; // 定義轉義字符
? ? ? ? System.out.println("ch1 = " + ch1); // 打印輸出
? ? ? ? System.out.println("ch2 = " + ch2); // 打印輸出
? ? ? ? System.out.println("\"Hello World|\"") ; // 直接輸出轉義字符
? ? }
}
?
執行結果:?
ch1 = "
ch2 = \
"Hello World|"
?
??
自定義常量?
常量的語法格式和變量類似,只需要在變量的語法格式前面添加個關鍵字 final 即可。在Java編碼規范中,要求常量名必須大寫。常量的語法格式如下:?
? ? ? ? ?final 數據類型 常量名稱 = 值;?
? ? ? ? ?final 數據類型 常量名稱1 = 值1, 常量名稱2 = 值2,……常量名稱n = 值n;?
final double PI = 3.14; // 聲明單個double類型的常量并賦值
final char SEX_MALE='男',SEX_FEMALE=‘女’; // 聲明兩個char類型的常量并分別賦值?
在Java語法中,常量也可以首先聲明,然后再進行賦值,但是只能賦值一次,語法格式如下:?
? ? ? ? ?final 數據類型 常量名稱;?
? ? ? ? ?常量名稱 = 值;?
final double PI;? // 先聲明常量
PI = 3.14; // 給已聲明的常量賦值