在日常开发工作中,经常会遇到基本数据类型的转换。在java中基本数据类型可以分为自动转换和强制转换,下面细说一下这两种类型转换的规则和细节。
先列一下基本数据类型和字节数说一下
整型 | 大小 | 浮点型 | 大小 | 字符型 | 大小 |
byte | 1 | double | 4 | char | 2 |
short | 2 | float | 8 | ||
int | 4 | ||||
long | 8 |
1. 自动转换
- 自动转换规则, 从 精度小的类型 转换成 精度大的类型 就叫自动化转换。
规则1: char -> int -> long -> float -> double
规则2: byte -> short -> int -> long ->float -> double
- 多种类型混合运算, 系统将类型转换成(多种类型中)最大的类型,在进行运算,运算得到的结果也是多种类型种最大的类型。
- 将 精度大 的类型赋值给 精度小 的类型,会报错 (可以强制转换,但可能会精度缺失)。
- (byte,short)和 char 之间不会自动转换。
- byte,short,char 可以参与计算,但是在计算之前会转换成int,计算得到的值也只能int 或者 大于 int 的类型接收。(这三种类中无论是单个类型 或 多个类型 参与计算都会转换成int)
2. 强制类型转换
- 数据类型从 大 ——> 小 需要强制转换。
- 将 精度大 的类型转换成 精度小 的类型,这样做可能会造成精度缺失。
- byte和short在运算时候,都会自动转换成 int 在计算, 其结果也是int类型。
- char 可以用int的常量值赋值,用变量值则需要强转。