Java變量
一、變量的命名
——標識符
- 標識符由數字、字母、下划線_、美元符$組成,但不能以數字開頭。
- 標識符對字母大小寫敏感。
- 標識符無長度限制。
- 不能以關鍵字作為標識符。
/* 合法的標識符: */ int amount = 17; int $apple = 8; int _index = 3; int 身高 = 180; /* 不合法的標識符: */ int float = 3.14; // 不能使用關鍵字 int #Index = 2; // 不能使用# int 3a = 9; // 不能以數字開頭
二、變量的分類
——局部變量、成員變量、靜態變量
(一)局部變量:在方法內或語句塊中定義,生命周期從聲明處開始到方法或語句塊結束處。
★ 使用局部變量前必須先聲明和初始化。
public class TestVarible { public static void main(String args[]) { { int age; // age是局部變量,只屬於本語句塊 System.out.printf("age = %d", age); // 編譯出錯, age沒有初始化 } age = 18; // 編譯出錯, age沒定義 } }
(二)成員變量:在方法外部、類的內部定義的變量,生命周期伴隨對象始終。
★ 聲明成員變量時會自動初始化,默認初始值見下表:
數據類型 | 初始值 |
int | 0 |
char | '\u0000' |
double | 0.0 |
boolean | false |
public class TestVarible { int testValue; // 成員變量, 初始值為0 }
(三)靜態變量:使用static定義的變量,生命周期伴隨類始終。
★ 聲明靜態變量時會自動初始化,默認初始值與成員變量相同。
public class TestVarible { static double score; // 靜態變量, score屬於類, 初始值為0.0 boolean flag; // 成員變量, flag屬於對象, 初始值為false public static void main(String args[]) { { int age; // 局部變量, age只屬於本語句塊 age = 17; } int fighting = 88; // 局部變量,fighting屬於方法 } }
三、變量、常變量
——聲明、初始化
★ 常變量與變量的唯一區別是:常變量初始化后不可再改變。
數據類型 變量名; // 變量聲明 final 數據類型 變量名; // 常變量聲明 變量名 = 值; // 變量初始化
★ 初始化變量時,整數默認為int類型,浮點數默認為double類型。
四、變量的數據類型
——基本數據類型、引用類型
五、基本數據類型
——boolean、byte、short、char、int、long、float、double
★ 低范圍變量可賦值給高范圍變量,超出范圍時需加轉換!
(一)整型:byte、short、int、long
1. 基本信息
數據類型 | 占用內存 | 表示范圍 | 定義 |
byte | 1字節 | -128~127 | - |
short | 2字節 | -32768~32767 | - |
int | 4字節 | 約21億 | - |
long | 8字節 | 約9.22E18 | 在末尾增加'L'或'l' |
2. 表示形式
- 10進制:-
- 16進制:以0x或0X開頭
- 8進制:以0開頭
- 2進制:以0b或0B開頭
public class TestVarible { public static void main(String args[]) { /* 正確的聲明和初始化 */ int a = 320000; int b = '對'; long c = a; long d = 3200000000L; // 數值超出21億, 需要增加轉換:在末尾加上"L"或"l" /* 非法的初始化 */ byte e = 128; // 超出范圍 unsigned int f = 200; // 不存在unsigned } }
(二)浮點型:float、double
1. 基本信息
數據類型 | 占用內存 | 表示范圍 | 定義 |
float | 4字節 | -3.403E38~3.403E38 | 在末尾增加'F'或'f' |
double | 8字節 | -1.798E308~1.798E308 | 在末尾增加'D'或'd' |
2. 表示形式
- 10進制:-
- 科學計數法:aEb或aeb (a為實數,b為整數)
public class TestVarible { public static void main(String args[]) { /* 正確的聲明和初始化 */ float a = 3.14F; float b = (int)6.89; float c = 0x0123; // 0x0123=291, 在21億范圍內 /* 非法的初始化 */ float d = 1e4; // 編譯錯誤, 1e4為double型 float e = 3.03d; // 編譯錯誤, 3.03d為double型 /* float型與double型最好不要進行比較 */ float m = 0.1f; double n = 0.1; System.out.println(m==n); // 輸出為false } }
(三)字符型:char
1. 基本信息
char類型占2字節,使用Unicode編碼形式,其表示范圍是0~65535。
2. 表示形式
- 字符常量:'x'
- 16進制:'\uxxxx' (x在0~f范圍內)
- 轉義字符:'\x' (x有不同含義)
public class TestVarible { public static void main(String args[]) { /* 正確的聲明和初始化 */ char a = '步'; char b = 24179; char c = '\u51e1'; System.out.printf("%c%c%c", a, b, c); /* 非法的初始化 */ char d = '\uabcg'; // g超出0~f范圍 int e = 'a'; char f = e; // e為int型, 高於char類型 } }
(四)布爾型:boolean
boolean類型占1位(1bit),只有true和false兩個值。
【參考資料】:
變量的數據類型圖片:速學堂