基本数据类型之间的相互转换
默认情况下,在java中小数是double,整数默认是int类型的。byte和short除外。
分类:自动类型转换和强制类型转换
- 自动类型转换
条件:
①由小范围到大范围转换
②数据类型要兼容
自动类型转换示意图:上图箭头所指的方向都是自动类型转换
实例:
public class Demo01{
public static void main(String[] args){
byte num1 = 123;
//向上发生自动类型转换
int num2 = num1;
System.out.println("num1:"+num1+",num2:"+num2);
}
}
```java
public class Demo02{
public static void main(String[] args){
float num1 = 2.3F;
//float 自动向 double转换
double num2 = num1;
System.out.println("num1:"+num1+",num2:"+num2);
}
}
```
特殊:
//char自动向int转换:
public class Demo03{
public static void main(String[] args){
char ch = 'a';
int num1 = ch;
System.out.println("ch:"+ch+",num1:"+num1);
}
}
public class Demo04{
public static void main(String[] args){
int num1= 123;
//整型自动转换为 float
float num2 = num1;
System.out.println("num1:"+num1+",num2:"+num2);
}
}
特殊中的特殊: long可以向float发送自动类型转换,但是可能会丢失精度
public class Demo05{
public static void main(String[] args){
long num1= 123131232123L;
//long类型也可以向float发生自动类型转换
float num2 = num1;
System.out.println("num1:"+num1+",num2:"+num2);
}
}
- 强制类型转换:转换示意图箭头的反方向就是强制转换
语法:
转换后的数据类型 变量名 = (转换后的数据类型 ) 转换前的数据;
条件:由小范围大大范围转换,数据类型要兼容。
public class Demo06{
public static void main(String[] args){
int num1 = 127;
//强制将int 转换为 byte
byte num2 = (byte)num1;
System.out.println("num1:"+num1+",num2:"+num2);
}
}
错误演示:
public class Demo07{
public static void main(String[] args){
boolean flag= true;
//错误: 类型不兼容
int num1 = (int)flag;
System.out.println("flag:"+flag+",num1:"+num1);
}
}
总结: 无论是自动类型转换还是强制类型转换,都是数值之间的转换。boolean不能转。