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。记住:类型匹配是程序正确运行的基础,多写代码、多踩坑,才能熟练掌握!

小夜