整数类型用补码表示,byte为-128~127、int为-2147483648~2147483647;char是0~65535的无符号整数;boolean仅有true/false;float精确整数上限约1677万,double约9×10¹⁵。

不用硬背数字,靠理解规则+调用常量最稳。
补码规则决定整数上下限
byte、short、int、long 都是有符号补码表示,最高位是符号位。负数比正数多一个值——因为 0 占了一个位置,且负数能表示到 -2n-1,而正数只能到 2n-1-1。
- byte 是 8 位 → -27 ~ 27-1 → -128 ~ 127
- int 是 32 位 → -231 ~ 231-1 → -2147483648 ~ 2147483647
- 别自己算 2 的幂,直接用 Integer.MIN_VALUE 和 Integer.MAX_VALUE 等包装类常量
char 和 boolean 不按“正负”理解
char 是无符号 16 位整数,范围就是 0 ~ 65535(即 '\u0000' 到 '\uffff'),对应 Character.MIN_VALUE 和 Character.MAX_VALUE。
- boolean 不是数值类型,没有大小或范围概念,只有 true/false 两个逻辑值
- 不要写 if (flag == true),直接写 if (flag)
- 它在内存中不等于 1 bit,HotSpot 里字段通常占 1 字节,数组元素也按 byte 存储
浮点型重点不是“最大值”,而是精度边界
float 和 double 遵循 IEEE 754 标准,取值范围极大,但能精确表示的整数有限:
立即学习“Java免费学习笔记(深入)”;
- float 最多精确到 224(约 1677 万),超过后相邻可表示值间隔变大
- double 精确到 253(约 9×10¹⁵),再大就会丢精度
- Float.MIN_VALUE 是最小正正规数(≈1.4e-45),不是最小负数;下界是 Float.NEGATIVE_INFINITY
- 比较时避免 ==,改用 Double.compare(a, b) == 0 或误差容忍判断
动手验证比死记更可靠
运行几行代码,结果一目了然:
- System.out.println(Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE); → -128 ~ 127
- System.out.println(Float.MAX_VALUE); → 约 3.4028235E38
- System.out.println((int) Math.pow(2, 24)); → 16777216,感受 float 精度断点
- 试一下 int x = Integer.MAX_VALUE; System.out.println(x + 1); → 看到静默回绕成负数


















