数据类型转换的类型
数据类型的种类
整数型:byte short ing long
浮点型 float double
布尔型(boolean) true false
字符型 char
1.自动数据类型转换
数据范围小的数据转换为大的数据类型
如:Long=100,(整数默认是int类型*)就发生了数据类型转换,由int类型转换成Long类型,
这种类型转换是自动发生的,数据就像杯子里的水,只不过是把水从小的容器倒到大的容器。
需要注意
- float=100L也是自动类型转换,虽然Long是八个字节,float是四个字节,但是float中用了科学计数法,范围是比Long大
short st=100;
System.out.println(st);//结果是100
2. 强制类型转换
适用条件:从数据类型范围大的转换成数据类型范围小的
在这个过程中有两种情况:
- 第一种是需要转换的数据大小没有超出被赋值的数据类型范围,并且左边没有任何的变量。
public class Demo1{
public static void main(String[] args){
short num=100L;
System.out.println(num);//输出的结果是100
}
}
这个过程发生的强制数据类型转换,100是Long类型,而且100没有超出short的数据范围,编译器会自动加上byte,short num=(byte)100L;。
public class Demo1{
public static void main(String[] args){
byte a=6;
bute b=7;
short num=a+b;
System.out.println(num);//编译时会报错,因为变量
}
} -
第二种情况是需要转换的数据大小超出了被赋值的数据类型的范围。
public class Demo1{
public static void main(String[] args){
int num= 6000000000;
System.out.println(num);//输出的结果是1705032704
}
}
这种情况需要转换的数据大小超出了被赋值的数据类型的范围会发生数据溢出
还有一种情况是小数转换成整数会损失精度
int num2=3.5;
System.out.println(num);//输出的结果是3
这不是四舍五入,而是直接把小数点后面去掉
补充
1.byte/short/char进行数学运算会先转换成int再运算
2.boolean不能进行强制类型转换