数据类型的转换
前言:
例:
int a = 10;
long b = 100L;
a = b;//会编译失败.
b = a;//编译通过.
在Java中,参与运算的数据类型不一致时,就会发生类型的转换.
Java中类型的转换主要分为两类:自动转换类型(也称为隐式转换),和强制转换类型(也称显示转换).
文章目录
自动类型转换
自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理,特点:数据范围小的转为数据范围大的时会自动进行。
强制类型转换
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成,特点:数据范围大的转为数据范围小的
1.小类型转为大类型是自动提升的
1.1小类型变变量赋值给大类型时,例:long a = 20;
1.2小类型和大类型进行数学运算时,首先会将小类型提升为大类型而后进行数学运算,
例
1.2.1 int 和 long 之间转换:
int a = 10;
long b = a + 1L;
//int + long = long + long, a 提升为long类型
1.2.2 int 和 double 之间转换:
int a = 4;
double b = 2;
//int / double -> double / double,a 提升为double类型
System.out.println(a/b);
2.大类型转为小类型需要强制类型转换,可能会导致数据精度丢失(数据溢出或部分数据丢失)
例
2.1 long 和 int 之间转换:
long b = 100L;
//long -> int需要强制类型转换
int c = (int) b;
2.2 double 和 int 之间转换:
double c = 1.0;
//double -> int需要强制类型转换
int d = (int) c;
3.特殊强调
3.1 int 和 byte 之间的转换:
int a = 10;
byte b = (byte)a;//大到小,强转
int c = b;//小到大,自动提升
3.2 int 和 char 之间的相互转换
计算机的内部都是0和1,char字符会按照不同的编码规则转为int存储。
3.2 int 和 String 之间的相互转换
3.2.1 int 转为 String
- 直接使用 String类 + (即字符串拼接)
- 使用 String 的 ValueoOf 方法