数据类型
世界上只有两种编程语言——要么充满了抱怨;要么没人使用
——Bjarne Stroustrup (C++ 之父)
Java支持数据类型分为两类:基本数据类型和引用数据类型
Java的基本数据类型分为四类八种:
1.整数类型 :
(1)byte : 1个字节,有符号,取值范围为 -128 到 127。默认值为 0
(2)short:2个字节,有符号,取值范围为 -32768到32767。默认值为 0
(3)int :4个字节,有符号,取值范围为 -2^31到 2^31 -1。默认值为 0
(4)long :8个字节 ,有符号,取值范围 -2 ^64到 2^64 -1。默认值为 0L
2.浮点数类型
(1)float :4 个字节 ,单精度浮点数。默认值为 0.0f
(2)double:8个字节,双精度浮点数 。默认值为 0.0d
3.字符类型
(1)char:2个字节,用于存储单个字符,采用Unicode编码,取值范围 0-65535
4.布尔类型
(1)boolean: 无明确位数,只有两个值 true 或 false
以下是Java 8种基本数据类型的对比表格:
| 数据类型 | 字节数 | 位数 | 可表示数据范围 | 默认值 | 描述 |
|---|---|---|---|---|---|
byte |
1 | 8 | -128 ~ 127 | 0 | 8位有符号整数,常用于节省内存或处理二进制数据 |
short |
2 | 16 | -32,768 ~ 32,767 | 0 | 16位有符号整数,适用于较小范围的数值 |
int |
4 | 32 | -2³¹ ~ 2³¹-1 | 0 | 32位有符号整数,最常用的整数类型 |
long |
8 | 64 | -2⁶³ ~ 2⁶³-1 | 0L | 64位有符号整数,适用于大范围数值(需加L后缀) |
float |
4 | 32 | 约 ±3.40282347E+38F(6-7位有效小数) | 0.0f | 32位单精度浮点数,需加f后缀 |
double |
8 | 64 | 约 ±1.7976931348623157E+308(15位有效小数) | 0.0d | 64位双精度浮点数,默认小数类型 |
char |
2 | 16 | 0 ~ 65,535(Unicode字符) | '\u0000' | 16位无符号字符,表示单个Unicode字符 |
boolean |
未严格定义(通常1位或1字节) | - | true 或 false |
false | 表示逻辑值,大小依赖JVM实现 |
数据类型转换方式
- 自动类型转换(隐式转换):当目标类型的范围大于源类型时,Java会自动将源类型转换为目标类型,不需要显式的类型转换。例如,将 int 转换为 long 、将 float 转换为 double 等。
- 强制类型转换(显式转换): 当目标类型的范围小于源类型时,需要使用强制类型转换将源类型转换为目标类型。这可能导致数据丢失或溢出。例如,将long 转换为 int 、将 double 转换为 int 等语法为:目标类型 变量名=(目标类型)源类型。
- 字符串转换:Java提供了将字符串表示的数据转换为其他类型数据的方法。例如,将字符串转换为整
型 int ,可以使用 Integer.parseInt()方法;将字符串转换为浮点型 double ,可以使用Double.parseDouble()方法等 - 数值之间的转换:Java提供了一些数值类型之间的转换方法,如将整型转换为字符型、将字符型转换为整型等。这些转换方式可以通过类型的包装类来实现,例如 character 类、 Integer 类等提供了相应的转换方法。
数据类型转换可能出现的问题
- 数据丢失:当将一个范围较大的数据类型转换为一个范围较小的数据类型时,可能会发生数据丢失。例如,将一个 long 类型的值转换为 int 类型时,如果 long 值超出了 int 类型的范围,转换结果将是截断后的低位部分,高位部分的数据将丢失。
- 数据溢出:与数据丢失相反,当将一个范围较小的数据类型转换为一个范围较大的数据类型时,可能会发生数据溢出。例如,将一个 int 类型的值转换为 long 类型时,转换结果会填充额外的高位空间,但原始数据仍然保持不变。
- 精度损失:在进行浮点数类型的转换时,可能会发生精度损失。由于浮点数的表示方式不同,将一个单精度浮点数( float)转换为双精度浮点数( double )时,精度可能会损失。
- 类型不匹配导致的错误:在进行类型转换时,需要确保源类型和目标类型是兼容的。如果两者不兼容会导致编译错误或运行时错误。

浙公网安备 33010602011771号