java的基本类型
Java语言中共有 8种 基本数据类型(Primitive Types),它们可以分为四大类:整数型、浮点型、字符型和布尔型。
以下是这8种基本类型的详细信息列表:
| 大类 | 类型 | 占用字节数 (Byte) | 占用位数 (bit) | 取值范围 | 默认值 | 对应包装类 |
|---|---|---|---|---|---|---|
| 整数型 | byte |
1 | 8 | ~ | 0 |
Byte |
short |
2 | 16 | ~ | 0 |
Short |
|
int |
4 | 32 | 约 亿 ( ~ ) | 0 |
Integer |
|
long |
8 | 64 | ~ | 0L |
Long |
|
| 浮点型 | float |
4 | 32 | (单精度) | 0.0f |
Float |
double |
8 | 64 | (双精度) | 0.0d |
Double |
|
| 字符型 | char |
2 | 16 | 单个 Unicode 字符 (\u0000 ~ \uffff) |
'\u0000' (空字符) |
Character |
| 布尔型 | boolean |
1位/1字节* | - | true 或 false |
false |
Boolean |
详细介绍与注意事项
1. 整数型 (byte, short, int, long)
- 默认类型:Java中整数字面量默认是
int类型。 - long 类型的声明:声明
long类型时,如果数值超出了int的范围,必须在数字后面加上L或l(推荐大写L,因为小写l容易和数字1混淆)。javalong num = 10000000000L;
2. 浮点型 (float, double)
- 默认类型:Java中浮点数字面量默认是
double类型。 - float 类型的声明:声明
float类型时,必须在数字后面加上F或f。javafloat pi = 3.14f; - 精度问题:
float和double采用的是 IEEE 754 标准,存在精度丢失问题。因此,在需要精确计算(如金融货币计算)时,绝对不能使用 float 和 double,而应该使用java.math.BigDecimal类。
3. 字符型 (char)
- Java 的
char类型采用 Unicode 编码,占用 2 个字节,因此它可以存储一个中文汉字。javachar c = '中';
4. 布尔型 (boolean)
boolean只有两个值:true和false。- *关于占用空间:JVM 规范并没有明确规定
boolean的实际大小。在编译后,JVM 会用int(4字节)来代替boolean,如果是boolean数组,则会编译成byte(1字节)数组。
基本类型 vs 引用类型 (主要区别)
- 存储位置:
- 基本类型:局部变量存在栈(Stack)内存中,速度快。
- 引用类型(如 String、数组、自定义类):对象实例存在堆(Heap)内存中,栈中只保存指向堆内存的引用(地址)。
- 默认值:
- 基本类型作为成员变量时,有上述表格中的默认值。
- 引用类型的默认值一律为
null。
- 自动装箱与拆箱 (Autoboxing & Unboxing):
- Java 5 引入了自动装箱和拆箱,使得基本类型和它们的包装类(Wrapper Classes)可以自动转换。
javaInteger age = 18; // 自动装箱:int 转换为 Integer int ageVal = age; // 自动拆箱:Integer 转换为 int