数据类型

世界上只有两种编程语言——要么充满了抱怨;要么没人使用
——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字节) - truefalse 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 )时,精度可能会损失。
  • 类型不匹配导致的错误:在进行类型转换时,需要确保源类型和目标类型是兼容的。如果两者不兼容会导致编译错误或运行时错误。
posted @ 2025-03-27 12:54  Tsukinor  阅读(57)  评论(0)    收藏  举报