Java基本数据类型共8种,分为整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean)四类;内存大小由JVM规范固定,取值范围由位数及编码方式决定。

Java基本数据类型共八种,按语义分为四类:整型、浮点型、字符型、布尔型。它们的内存大小是JVM规范强制规定的,不随平台变化;取值范围则由位数与编码方式(补码或IEEE 754)决定。掌握时不必硬背数字,重点理解“位数→字节→范围”的逻辑链,并善用JDK内置常量验证。
整型:从byte到long,位数翻倍,范围指数增长
整型全部采用有符号补码表示,范围公式统一为:−2N−1 到 2N−1−1(N为总位数)。字节数直接对应位数×8:
- byte:1字节(8位),范围 −128 ~ 127
- short:2字节(16位),范围 −32768 ~ 32767
- int:4字节(32位),范围 −2147483648 ~ 2147483647(即 Integer.MIN_VALUE/MAX_VALUE)
- long:8字节(64位),范围 −9223372036854775808 ~ 9223372036854775807
浮点型:float与double遵循IEEE 754标准
它们的“范围”和“精度”需分开看待——大数可表示,但未必能精确存储整数:
- float:4字节(32位),最大值约 ±3.4028×10³⁸,但有效十进制位仅6~7位
- double:8字节(64位),最大值约 ±1.7977×10³⁰⁸,有效十进制位约15位
- 日常开发中直接使用 Float.MAX_VALUE 和 Double.MAX_VALUE 更可靠,无需手算
字符型:char是无符号16位整数,不是“字母专属”
char本质是Unicode码点,占2字节(16位),取值0 ~ 65535(即 '\u0000' 到 '\uffff'):
立即学习“Java免费学习笔记(深入)”;
- 能表示中文、日文、emoji等所有基本Unicode字符(含ASCII)
- 不是有符号类型,不能当 short 用;例如 (short)'\uFFFF' 会变成 −1
- 默认值是 '\u0000'(空字符),不是空格或 null
布尔型:boolean没有JVM规范定义的固定大小
这是唯一例外——规范只规定其逻辑值为 true/false,未限定物理存储大小:
- 栈上局部变量通常按1字节对齐(如HotSpot JVM),但这是实现细节,不可依赖
- boolean[] 数组底层常以 byte 为单位压缩存储(1 byte 存8个值),但单个 boolean 变量不共享空间
- 别信“占1 bit”说法:JVM不支持bit寻址,所有变量地址必须字节对齐
- 考试或教材写“1字节”是简化处理,实际编码中永远不该基于它的大小做内存估算


















