java有8种基本数据类型:byte、short、int、long、float、double、char、boolean,各自在位数、取值范围、默认值、字面量规则及适用场景上严格区分,直接影响程序正确性、内存效率与计算精度。

Java 有 8 种基本数据类型,它们是语言最底层的构建块,不依赖对象、不占用堆内存,直接存值。选对类型不仅影响程序正确性,还关系到内存效率和计算精度。
整数类型:按范围和空间分层使用
整数类型共 4 种,区别主要在位数、取值范围和默认适用场景:
-
byte(1 字节):范围 -128 ~ 127,适合大量小整数场景,比如图像像素、网络协议字节流;声明时可直接赋值
byte b = 100;,但超出范围需强制转换 - short(2 字节):范围 -32768 ~ 32767,使用较少,仅在明确需要节省内存且数值可控时考虑
- int(4 字节):范围约 ±21 亿,是整数运算的默认选择;日常计数、数组索引、循环变量基本都用它
-
long(8 字节):范围极大(±9.2×10¹⁸),用于时间戳(
System.currentTimeMillis())、文件大小、高并发计数器;赋值必须加L后缀,如long t = 1625097600000L;,否则编译报错
浮点类型:别拿 float/double 做精确计算
float 和 double 都遵循 IEEE 754 标准,本质是二进制近似表示十进制小数,天生存在精度误差:
-
float(4 字节,单精度):有效位约 6~7 位十进制数字,声明需加
f或F,如float f = 3.14f;;适合对精度要求不高、内存敏感的大数组 -
double(8 字节,双精度):有效位约 15~16 位,是浮点数的默认类型;
double d = 3.14;合法,但double d = 0.1 + 0.2;结果不是精确的 0.3 —— 这是二进制无法精确表示 0.1 导致的 - 涉及金额、财务计算等必须精确的场景,应使用
BigDecimal,而非任何浮点类型
字符与布尔:语义明确,不可替代
这两类类型用途单一,但设计意图清晰:
-
char(2 字节):表示一个 Unicode 字符,底层是无符号 16 位整数(0 ~ 65535),可参与简单算术(如
'a' + 1得'b'),也能直接赋值汉字:char c = '中'; -
boolean(无固定字节大小):只有
true和false两个值,不能转成 0/1,也不能参与数值运算;JVM 实际存储可能用 1 位或 1 字节,但程序员无需关心——只用来做逻辑判断和流程控制
关键细节:默认值、字面量与类型安全
这些细节常被忽略,却直接影响代码健壮性:
- 成员变量有默认值(如
int默认 0,boolean默认false),但局部变量必须显式初始化,否则编译报错 - 字面量后缀很重要:
100是 int,100L是 long,100.0是 double,100.0f是 float;混用时注意隐式/显式转换规则 - 基本类型之间转换要警惕溢出和精度丢失,例如
int i = (int) 3.999;结果是 3,而byte b = (byte) 200;会变成 -56(因超出 byte 范围发生截断)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











