Java 中的 基本数据类型 是java语言内置的、不可再分解的简单数据类型,它们不是对象,直接存储在栈内存中,具有固定的存储空间和默认值。这些类型具有以下特点:
-
是语言原生支持的简单类型
-
直接存储在栈内存中
-
占用固定大小的存储空间
-
拥有预设的默认值
-
不属于对象类型
它们一共有八种可以分为以下四大类:
一、整型(存储整数)
| 类型 | 内存占用 | 取值范围 | 默认值 | 示例 |
|---|---|---|---|---|
byte | 1字节 | -128 ~ 127 | 0 | byte size = 100; |
short | 2字节 | -32,768 ~ 32,767 | 0 | short count = 5000; |
int | 4字节 | -2³¹ ~ 2³¹-1 | 0 | int age = 25; |
long | 8字节 | -2⁶³ ~ 2⁶³-1 | 0L | long pop = 80_0000_0000L; |
注意:
long类型字面量需以
L或l结尾(推荐大写L)。整数字面量默认为
int类型,超范围需显式用long。
二、浮点型(存储小数)
| 类型 | 内存占用 | 取值范围 | 精度 | 默认值 | 示例 |
|---|---|---|---|---|---|
float | 4字节 | ±3.4e⁻³⁸ ~ ±3.4e³⁸ | 约6~7位有效数字 | 0.0f | float price = 19.99f; |
double | 8字节 | ±1.7e⁻³⁰⁸ ~ ±1.7e³⁰⁸ | 约15位有效数字 | 0.0d | double pi = 3.1415926; |
注意:
float字面量需以
f或F结尾。小数字面量默认为
double类型。浮点数有精度误差(如
0.1 + 0.2 != 0.3),需用BigDecimal处理精确计算。
三、字符型(存储单个字符)
| 类型 | 内存占用 | 取值范围 | 默认值 | 示例 |
|---|---|---|---|---|
char | 2字节 | Unicode字符(0 ~ 65535) | \u0000 | char grade = 'A'; |
特性:
- 用单引号
''表示(如'A'、'中')。- 可存储转义符(如
\n换行、\t制表符)。- 可直接赋整数值(如
char c = 65;→'A')。
四、布尔型(逻辑判断)
| 类型 | 内存占用 | 取值 | 默认值 | 示例 |
|---|---|---|---|---|
boolean | 未定义¹ | true/false | false | boolean isDone = true; |
注意:
不能用
0或1代替true/false。JVM实现中通常占用 1字节(或按位优化存储)。
关键特点
-
存储在栈内存
性能高,直接存储值。
-
无方法
不同于对象(如
Integer),基本类型没有成员方法。 -
值不可为空
必须赋予有效值(如
int不能为null)。 -
自动类型转换
小范围类型 → 大范围类型(如
int→long)自动提升。
使用示例
public class Demo {
public static void main(String[] args) {
// 1. 整型
int score = 95;
long globalPopulation = 7_900_000_000L; // 使用下划线提高可读性
//2. 浮点型
float temperature = 36.6f;
double atomicMass = 1.66053906660e-27;
// 3. 字符型
char copyright = '©'; // Unicode字符
// 4. 布尔型
boolean isValid = (score > 60);
// 自动类型转换示例
int a = 100;
long b = a; // int → long 自动转换
}
}
基本类型总结表
| 类型 | 大小 (位/字节) | 最小值 | 最大值 | 默认值 | 用途 & 注释 |
|---|---|---|---|---|---|
byte | 8 bits (1 字节) | -128 | 127 | 0 | 小整数,节省空间 |
short | 16 bits (2 字节) | -32,768 | 32,767 | 0 | 不常用,历史遗留/特定格式 |
int | 32 bits (4 字节) | -2,147,483,648 (-2³¹) | 2,147,483,647 (2³¹-1) | 0 | 最常用整数类型 |
long | 64 bits (8 字节) | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | 0L | 大整数 (数值后加 L) |
float | 32 bits (4 字节) | ≈ -3.4E38 (有效位数 6-7) | ≈ 3.4E38 (有效位数 6-7) | 0.0f | 单精度浮点 (数值后加 F), 精度有限 |
double | 64 bits (8 字节) | ≈ -1.7E308 (有效位数 15) | ≈ 1.7E308 (有效位数 15) | 0.0d | 默认浮点类型, 双精度更高 |
char | 16 bits (2 字节) | ‘\u0000’ (0) | ‘\uffff’ (65,535) | ‘\u0000’ | 单字符或 Unicode 代码点 |
boolean | 未精确定义 | false | true | false | 逻辑值 (true / false), 非数值 |
何时使用包装类?
当需要以下功能时,使用包装类(如 Integer, Double):
- 值可为空(
null) - 放入集合(如
List<Integer>) - 调用对象方法(如
Integer.parseInt()) - 泛型参数(如
T必须是对象类型)
自动装箱(Autoboxing):
int i = 10; Integer boxed = i;(基本 → 包装)自动拆箱(Unboxing):Integer j = 20; int k = j;(包装 → 基本)
总结
基本数据类型是Java编程的基础,是每一位java开发者必须掌握的知识点,掌握这些基本数据类型及其特性和限制,是进行高效、无错 java 编程的基础!
2055

被折叠的 条评论
为什么被折叠?



