Java 基本数据类型详解
Java 是强类型语言,所有变量必须先声明数据类型才能使用。基本数据类型(Primitive Data Types)是 Java 提供的预定义类型,用于存储简单值(非对象),具有固定大小和取值范围。以下是 Java 的 8 种基本数据类型的分类与说明:
1. 整数类型
用于存储无小数部分的数值,按占用内存大小和取值范围划分:
类型 | 大小(字节) | 取值范围 | 示例 |
---|---|---|---|
byte | 1 | -128 到 127 | byte b = 100; |
short | 2 | -32,768 到 32,767 | short s = 30000; |
int | 4 | -2³¹ 到 2³¹-1(约 ±21 亿) | int i = 1000000; |
long | 8 | -2⁶³ 到 2⁶³-1(极大范围) | long l = 10000000000L; |
注意:
long
类型赋值时需在数字后加L
(如100L
),否则会被当作int
处理。- 默认情况下,整数常量是
int
类型。
2. 浮点类型
用于存储带小数部分的数值,分为单精度和双精度:
类型 | 大小(字节) | 取值范围 | 示例 |
---|---|---|---|
float | 4 | 约 ±3.4E+38(有效数字 6-7 位) | float f = 3.14f; |
double | 8 | 约 ±1.8E+308(有效数字 15-16 位,默认) | double d = 3.14159; |
注意:
float
类型赋值时需在数字后加f
(如3.14f
),否则会被当作double
处理。- 默认情况下,浮点常量是
double
类型。
3. 字符类型
用于存储单个字符:
类型 | 大小(字节) | 取值范围 | 示例 |
---|---|---|---|
char | 2 | Unicode 字符(0 到 65,535) | char c = 'A'; |
说明:
char
使用单引号('
)包裹字符,如'A'
、'中'
。- 可表示 Unicode 字符(如
'\u0041'
表示'A'
)。
4. 布尔类型
用于存储逻辑值:
类型 | 大小(字节) | 取值范围 | 示例 |
---|---|---|---|
boolean | 1 | true 或 false | boolean flag = true; |
说明:
- 布尔值仅用于逻辑判断(如条件语句、循环)。
- 不能转换为整数类型(如
0
或1
)。
关键点总结
- 固定大小:基本数据类型的大小在所有平台上一致(如
int
始终是 4 字节)。 - 默认值:
- 局部变量(方法内声明)无默认值,必须显式初始化。
- 成员变量(类中声明)有默认值(如
int
默认0
,boolean
默认false
)。
- 性能优势:基本数据类型存储在栈内存中,访问速度比引用类型(对象)更快。
- 不可变性:基本数据类型的值不可变(如
int a = 10; a = 20;
是重新赋值,而非修改原值)。
示例代码
public class PrimitiveTypesExample {
public static void main(String[] args) {
// 整数类型
byte b = 100;
short s = 30000;
int i = 1000000;
long l = 10000000000L;
// 浮点类型
float f = 3.14f;
double d = 3.1415926535;
// 字符类型
char c = 'A';
char unicodeChar = '\u4E2D'; // '中'
// 布尔类型
boolean flag = true;
System.out.println("byte: " + b);
System.out.println("long: " + l);
System.out.println("float: " + f);
System.out.println("char: " + c + ", Unicode: " + unicodeChar);
System.out.println("boolean: " + flag);
}
}
与引用类型的区别
- 基本数据类型:存储实际值,直接参与运算。
- 引用类型(如
String
、Integer
):存储对象的引用(内存地址),通过new
创建或自动装箱。
示例:
int a = 10; // 基本数据类型
Integer b = 20; // 引用类型(自动装箱为 Integer 对象)
通过掌握基本数据类型,可以更高效地编写 Java 程序,避免因类型选择不当导致的性能或逻辑问题。