一、基本数据类型分类
Java共有 8种基本数据类型,分为4类:
类别 | 数据类型 | 位数 | 默认值 | 取值范围/描述 |
---|---|---|---|---|
整型 | byte | 8位 | 0 | -128 ~ 127 |
short | 16位 | 0 | -32,768 ~ 32,767 | |
int | 32位 | 0 | -2³¹ ~ 2³¹-1 | |
long | 64位 | 0L | -2⁶³ ~ 2⁶³-1 | |
浮点型 | float | 32位 | 0.0f | 单精度,IEEE 754 |
double | 64位 | 0.0d | 双精度,默认浮点类型 | |
字符型 | char | 16位 | '\u0000' | Unicode字符(0 ~ 65,535) |
布尔型 | boolean | 1位* | false | true 或 false |
注意:
-
局部变量必须显式初始化,无默认值(否则编译错误)。
二、类型
1、整型(Integer Types)
(1)特点:
-
直接存储数值,无小数部分。
-
字面量表示方式:
int decimal = 100; // 十进制
int binary = 0b1100100; // 二进制(前缀0b)
int octal = 0144; // 八进制(前缀0)
int hex = 0x64; // 十六进制(前缀0x)
long big = 100L; // long类型需加L/l后缀
(2)数值可读性优化:允许用下划线分隔
int million = 1_000_000; // 等价于1000000
(3)使用场景:
-
byte
:节省空间(如文件读写、网络传输)。 -
int
:最常用,循环计数、数学运算。 -
long
:处理极大整数(如时间戳)。
2、浮点型(Floating-Point Types)
(1)特点:
-
遵循IEEE 754标准,存在精度问题。
-
字面量默认是
double
类型,声明float
需加F/f
后缀:
float f = 3.14f; // 必须加f
double d = 3.14; // 默认double
double sci = 1.23e5; // 科学计数法(123000.0)
(2)精度问题示例:
System.out.println(0.1 + 0.2); // 输出0.30000000000000004
(3)使用场景:
-
float
:节省内存(如大规模浮点数组)。 -
double
:默认选择,高精度计算。
3、字符型(char
)
(1)特点:
-
单引号包裹,表示单个Unicode字符。
-
可转义特殊字符(如
\n
、\t
、\\
)。 -
可直接赋值Unicode编码或整数值:
char c1 = 'A'; // 直接字符
char c2 = 65; // ASCII码('A')
char c3 = '\u0041'; // Unicode形式('A')
注意事项:
-
与
int
兼容(可通过ASCII码转换):
int code = 'A'; // code = 65
4、布尔型(boolean
)
特点:
-
仅允许
true
或false
,不能与整数互换。 -
用于条件判断(如
if
、while
)。
错误示例:
if (1) { ... } // 错误:Java不支持非布尔条件
5、类型转换
(1)自动转换(隐式转换):
-
小类型 → 大类型(如
byte
→int
):
byte b = 10;
int i = b; // 自动转换
(2)强制转换(显式转换):
-
大类型 → 小类型,需强制转换,可能丢失数据:
int i = 200;
byte b = (byte) i; // b = -56(溢出)
(3)转换规则:
byte
→ short
→ int
→ long
→ float
→ double
char
→ int
→ ...
三、包装类(Wrapper Classes)
每个基本类型对应一个包装类,用于对象操作(如集合类):
基本类型 | 包装类 | 示例 |
---|---|---|
byte | Byte | Byte.valueOf((byte)1) |
short | Short | Short.valueOf((short)2) |
int | Integer | Integer.valueOf(3) |
long | Long | Long.valueOf(4L) |
float | Float | Float.valueOf(5.0f) |
double | Double | Double.valueOf(6.0) |
char | Character | Character.valueOf('a') |
boolean | Boolean | Boolean.valueOf(true) |
(1)自动装箱与拆箱:
Integer a = 10; // 自动装箱(int → Integer)
int b = a; // 自动拆箱(Integer → int)
(2)默认值与内存分配
-
成员变量:有默认值(如
int
为0
)。 -
局部变量:必须显式初始化,否则编译错误。
-
内存位置:基本类型变量存储在栈内存,对象在堆内存。
四、示例代码
public class PrimitiveTypes {
// 成员变量(有默认值)
int defaultInt; // 0
double defaultDouble; // 0.0
boolean defaultBoolean; // false
public static void main(String[] args) {
// 局部变量必须初始化
int localInt = 100;
char grade = 'A';
float price = 19.99f;
long population = 7_900_000_000L;
// 强制类型转换
double pi = 3.14159;
int approxPi = (int) pi; // approxPi = 3
}
}