Java 语言提供了八种基本类型
Java 中的基本数据类型(primitive types)一共有 8 种,它们不是类(没有 new),而是直接存储在栈上的值类型,效率最高。
下面是完整的八种基本类型及其详细说明:
| 序号 | 类型 | 关键字 | 占用字节 | 位数 | 默认值 | 取值范围 | 包装类(Wrapper Class) |
|---|---|---|---|---|---|---|---|
| 1 | 整型-字节 | byte | 1 | 8 | 0 | -128 ~ 127 | Byte |
| 2 | 整型-短整型 | short | 2 | 16 | 0 | -32,768 ~ 32,767 | Short |
| 3 | 整型 | int | 4 | 32 | 0 | -2³¹ ~ 2³¹-1(约 -21亿 ~ 21亿) | Integer |
| 4 | 整型-长整型 | long | 8 | 64 | 0L | -2⁶³ ~ 2⁶³-1 | Long |
| 5 | 浮点-单精度 | float | 4 | 32 | 0.0f | ±3.4E38(有效数字约6~7位) | Float |
| 6 | 浮点-双精度 | double | 8 | 64 | 0.0 | ±1.8E308(有效数字约15~16位) | Double |
| 7 | 字符型 | char | 2 | 16 | ” (空字符) | 0 ~ 65535(Unicode 字符) | Character |
| 8 | 布尔型 | boolean | 1(理论) | — | false | 只有两个值:true、false | Boolean |
常用记忆口诀
“一二四八,长浮双 char 布”
- 一:byte
- 二:short
- 四:int / float
- 八:long / double
- 长:long
- 浮:float
- 双:double
- char:字符
- 布:boolean
重要特性与注意事项
- 默认类型
- 整数字面量默认是
int类型 - 浮点字面量默认是
double类型 - 示例:
long l = 10000000000; // 编译错误 long l = 10000000000L; // 正确,加 L 或 l float f = 3.14; // 编译错误 float f = 3.14f; // 正确,加 f 或 F
- 自动类型转换(从小到大)
byte → short → int → long → float → double
↑
char → int
规则:小范围 → 大范围 可以自动转换(隐式转换)
- 强制类型转换(可能丢失精度)
int i = 100;
byte b = (byte)i; // 正确
- 包装类与自动装箱/拆箱(JDK 5+)
Integer num = 100; // 自动装箱
int value = num; // 自动拆箱
- boolean 特别说明
- 不能和整数进行转换(不像 C/C++)
- 不能写
if (flag == 1) - 占用字节在 JVM 中实现相关,通常是 1 字节(不是 1 bit)
快速对比总结表(面试/刷题常用)
| 需求 | 推荐类型 | 说明 |
|---|---|---|
| 日常计数、循环索引 | int | 最常用,默认类型 |
| 大整数(超过 21 亿) | long | 加 L 后缀 |
| 精确小数(货币、金融) | BigDecimal | 不用 float/double |
| 科学计算、普通小数 | double | 默认浮点类型,性能较好 |
| 节省内存(大数据量) | byte/short | 数组中常用 |
| 字符处理 | char | 单个 Unicode 字符 |
| 逻辑判断 | boolean | 唯一可选的布尔类型 |
小练习(巩固理解)
public class PrimitiveTest {
public static void main(String[] args) {
byte b = 127;
short s = 32767;
int i = 2147483647;
long l = 9223372036854775807L;
float f = 3.14f;
double d = 3.141592653589793;
char c = 'A'; // 65
char c2 = '\u4e2d'; // 中
boolean flag = true;
System.out.println("char 对应的 Unicode 值: " + (int)c);
}
}
如果想深入了解某个类型的使用场景、精度丢失问题、包装类的缓存机制(IntegerCache)、自动装箱的性能陷阱等,欢迎继续提问!