Java作爲一門強類型語言,變量在定義時就需要明確數據類型。數據類型不僅決定了變量能存儲什麼值,還影響着運算規則和內存佔用。今天我們就來聊聊最基礎也最常用的三個基本數據類型:int(整數)、double(小數)、boolean(布爾值),看看它們的“真面目”以及使用時容易踩的坑。
1. int:整數的“舞臺”¶
int 是用來存儲沒有小數部分的整數,比如年齡、考試分數、數組索引等場景。它在Java中是最常用的整數類型,佔用4個字節(32位),取值範圍由其存儲方式決定。
1.1 取值範圍¶
由於 int 是32位有符號整數,它的取值範圍是 -2^31 到 2^31 - 1,具體數值是:
- 最小值:-2147483648
- 最大值:2147483647
可以簡單理解爲,int 能存儲大約 -21億到21億 之間的整數。比如 123、-456、0 都是合法的 int 值。
1.2 常見使用場景¶
- 計數:比如統計用戶點擊次數
int clickCount = 100; - 索引:數組或集合的下標
int index = 5; - 年齡/分數:
int age = 25;或int score = 95;
1.3 容易踩的坑¶
-
溢出錯誤:如果賦值的整數超過
int的最大值,編譯時就會報錯。
示例:int a = 2147483648;(直接賦值會編譯失敗,因爲2147483648超過了最大值2147483647)。
解決辦法:用long類型存儲更大的整數(比如long bigNum = 123456789012L;,注意加L後綴表示長整型)。 -
隱式溢出:即使不直接賦值,運算也可能導致溢出。
示例:int max = 2147483647;
int result = max + 1;// 結果會變成 -2147483648(因爲超過32位有符號整數的最大值後會“循環”)。
注意:如果需要嚴格避免溢出,建議用long或BigInteger(但初學者先從基礎類型開始)。
2. double:小數的“管家”¶
double 是用來存儲帶小數的數值(也叫浮點數),比如金額、身高、體重等需要精度的場景。它佔用8個字節(64位),精度比 float(4字節)更高。
2.1 取值範圍¶
double 的取值範圍非常大,約爲 ±1.7976931348623157E+308 到 ±4.9000000000000000E-324。簡單來說,它能表示從極小的數(接近0)到極大的數(如1e300),遠超 int 的範圍。
2.2 常見使用場景¶
- 金額:
double price = 19.99; - 身高/體重:
double height = 175.5; - 溫度:
double temp = 36.5;
2.3 容易踩的坑¶
-
精度問題:
double是二進制浮點數,無法精確表示所有小數(比如0.1在二進制中是無限循環的)。直接用==比較double可能得到“意外結果”。
示例:System.out.println(0.1 + 0.2);// 實際輸出0.30000000000000004(而非預期的0.3)。
解決辦法:如果需要精確比較,建議用BigDecimal(如BigDecimal.valueOf(0.1).add(BigDecimal.valueOf(0.2))),或比較兩個數的差值是否小於極小值(如Math.abs(a - b) < 1e-9)。 -
溢出成“無窮大”:如果賦值的數超過
double的最大值,會變成Infinity(無窮大)。
示例:double maxDouble = Double.MAX_VALUE;
double overflow = maxDouble * 2;// 結果是Infinity(無窮大)。
3. boolean:邏輯的“開關”¶
boolean 是布爾類型,只有兩個值:true(真)和 false(假),用來表示條件或狀態,比如“是否登錄”“是否完成”等。
3.1 取值範圍¶
只有 true 和 false 兩個值,沒有其他可能。
3.2 常見使用場景¶
- 條件判斷:
if (isLogin) { ... } - 循環控制:
while (isRunning) { ... } - 狀態標記:
boolean isOpen = false;(表示“門是否打開”)
3.3 容易踩的坑¶
-
賦值錯誤:
boolean變量只能用true或false賦值,不能用1或0(雖然部分編譯器可能“容忍”,但屬於類型不匹配,嚴格來說是錯誤的)。
示例:boolean flag = 1;// 錯誤!應改爲boolean flag = true; -
算術運算禁忌:
boolean不能參與算術運算。
示例:int a = 1 + true;// 編譯錯誤!true是布爾值,不能和整數相加。
總結:選對類型,避免“翻車”¶
int:存整數,注意範圍(別超過21億),避免溢出。double:存小數,避免直接用==比較,優先用BigDecimal處理精度。boolean:存真假,只能用true/false,別用1/0賦值。
基本數據類型的選擇沒有“對錯”,但需要根據實際需求:比如年齡用 int,金額用 double,開關用 boolean。記住:類型匹配是程序正確運行的基礎,多寫代碼、多踩坑,才能熟練掌握!