类型转换是将一个值从一种类型更改为另一种类型的过程。比如,可以将String类型数据“123”转换为一个数值型数据,而且可以将任意类型的数据转换为String类型数据。如果将低精度数据类型向高精度数据类型数据转换,则不会溢出,通常都是成功的;而把高精度数据类型向低精度数据类型转换则必然会有信息丢失,有可能失败。
数据类型有两种方式,一种是隐式转换,另一种是显式转换。
1.隐式类型转换
当低级数据类型向高级数据类型转换时,系统会自动转换,我们无须进行任何操作,像这样的类型转换称为隐式转换。基本数据类型转换(转换从低级到高级,boolean类型除外)如下图所示:
自动转换有以下规律:小的类型自动转化为大的类型;整数类型可以自动转化为浮点类型,可能会产生舍入误差 ;字符可以自动提升为整数。
示例代码:
public class Number2 {
public static void main(String[] args) {
byte one=120;
int two=168;
float three=348.56f;
char four=12;
double five=87.67;
System.out.println("byte型与int型数据行结算结果为:"+(one+two));
System.out.println("byte型与float型数据进行结算结果为:"+(one+three));
System.out.println("byte型与char型数据进行结算结果为:"+(one+four));
System.out.println("double型与char型数据进行结算结果为:"+(five+four));
}
}
代码运行截图:
2.显式类型转换
把高精度的变量的值赋给低精度的变量是,必须使用显式类型转换运算,也就是强制类型转换。强制类型转换需要注意的一些问题:强制类型转换可能导致溢出或损失精度;在把容量大的类型转换为容量小的类型时必须使用强制类型转换;浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。语法格式:(数据类型) 要转换的值
示例代码:
int inta=(int) 65.14;//输出结果65
long longa=(long) 478.7F;//输出结果478
int intb=(int) 'u';//输出结果117