Java變數 一、變數的命名 ——標識符 標識符由數字、字母、下劃線_、美元符$組成,但不能以數字開頭。 標識符對字母大小寫敏感。 標識符無長度限制。 不能以關鍵字作為標識符。 /* 合法的標識符: */ int amount = 17; int $apple = 8; int _index = 3 ...
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位元組 | -263~263-1 | 在末尾增加'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兩個值。
【參考資料】:
變數的數據類型圖片:速學堂