Java基本數據類型:int、double、boolean,你真的用對了嗎?

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-4560 都是合法的 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位有符號整數的最大值後會“循環”)。
    注意:如果需要嚴格避免溢出,建議用 longBigInteger(但初學者先從基礎類型開始)。

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 取值範圍

只有 truefalse 兩個值,沒有其他可能。

3.2 常見使用場景

  • 條件判斷:if (isLogin) { ... }
  • 循環控制:while (isRunning) { ... }
  • 狀態標記:boolean isOpen = false;(表示“門是否打開”)

3.3 容易踩的坑

  • 賦值錯誤boolean 變量只能用 truefalse 賦值,不能用 10(雖然部分編譯器可能“容忍”,但屬於類型不匹配,嚴格來說是錯誤的)。
    示例:boolean flag = 1; // 錯誤!應改爲 boolean flag = true;

  • 算術運算禁忌boolean 不能參與算術運算。
    示例:int a = 1 + true; // 編譯錯誤!true 是布爾值,不能和整數相加。

總結:選對類型,避免“翻車”

  • int:存整數,注意範圍(別超過21億),避免溢出。
  • double:存小數,避免直接用 == 比較,優先用 BigDecimal 處理精度。
  • boolean:存真假,只能用 true/false,別用1/0賦值。

基本數據類型的選擇沒有“對錯”,但需要根據實際需求:比如年齡用 int,金額用 double,開關用 boolean。記住:類型匹配是程序正確運行的基礎,多寫代碼、多踩坑,才能熟練掌握!

小夜