Java的8种基本类型严格对应内存占用、取值范围和使用场景:byte/short/int/long用于整数,需防越界;float/double为浮点近似值,常量须带后缀;char和boolean语义明确不可混用;常量定义需注意进制、后缀与范围。

Java 的 8 种基本类型不是随便选的,每一种都对应明确的内存占用、取值边界和使用意图。用错类型轻则浪费内存,重则溢出崩溃或精度丢失——尤其在定义常量时,后缀、进制、范围必须一步到位。
整数型:按需分配,越小越省,越界即报错
整数类型共 4 种,区别只在位宽和范围,编译器严格检查字面量是否越界:
-
byte(1 字节):-128 ~ 127。声明
byte b = 128;直接编译失败;适合状态码、协议字段、像素值等极小范围场景 - short(2 字节):-32768 ~ 32767。日常极少单独使用,仅在密集小整数数组(如音视频采样)中考虑空间优化
-
int(4 字节):-2147483648 ~ 2147483647。默认整数类型,计数、索引、ID(非超长)首选;支持下划线分隔(
int id = 1_000_000;) -
long(8 字节):-9223372036854775808 ~ 9223372036854775807。大整数必须加
L后缀(如long ts = 1719109560000L;),小写l易与数字 1 混淆,不推荐
浮点型:别信“看起来相等”,常量要带后缀
float 和 double 都是近似存储,不能用于精确计算(如金额)。常量定义时后缀决定类型:
-
float(4 字节):单精度,约 6~7 位有效数字;字面量必须加
f或F(float x = 3.1415926F;),否则默认为 double -
double(8 字节):双精度,约 15~16 位有效数字;无后缀即 double(
double y = 0.1;),但0.1 + 0.2 == 0.3结果为false - 所有浮点常量支持科学计数法(
double d = 1.23e-4;),但金融/高精度场景务必改用BigDecimal
字符与布尔:语义清晰,不可混用
这两类虽简单,但类型安全边界非常刚性:
立即学习“Java免费学习笔记(深入)”;
-
char(2 字节):Unicode 字符,范围
'\u0000'(0)到'\uffff'(65535);用单引号,如'A'、'中'、'\n';不是字符串,不能直接拼接或参与算术运算(除非显式转 int) -
boolean:仅
true/false两个值;无数值含义,不能与 0/1 互换,也不能转成其他类型;默认值为false(成员变量),局部变量必须显式初始化
数值型常量定义实操要点
常量写法看似随意,实则处处是坑:
- 十进制整数默认为
int,超范围需加L(2147483648L);八进制以0开头(012即十进制 10);十六进制以0x开头(0xFF) - 浮点常量默认是
double,赋给float变量必须强制转型或加F(float f = 3.14f;) - 所有基本类型成员变量有默认值(
int/long为 0,char为'\u0000',boolean为false),但局部变量必须显式赋值才能使用 - 编译期可验证的越界(如
byte b = 200;)会立即报错,运行时溢出(如int i = Integer.MAX_VALUE + 1;)则静默回绕,需靠单元测试或工具检测


















