变量的转换

类型转换
精度丢失
加减乘除运算


1. 类型转换  溢出 精度丢失
 高精度向低精度转换   =》溢出
低精度向高精度转换 隐式转换

float b=1.0f  是可以的也是属于强转的一种


long l=1024L*1024*1024*4;
int j=(int)l;//会产生溢出
System.out.println(j);//结果为:0

double pi=3.141592653589793;
float f=(float)pi;//会造成精度的损失
System.out.println(f);//结果为:3.1415927

2. 数值之间的自动转换

基本数据类型的加减乘除 的结果,会自动向最大类型转换

long distance=10000*365*24*60*60*299792458L;

上述代码中,有int类型数据和long类型数据,由于有long型的直接量299792458L参与,整个表达式的结果为long

double change=800-599.0;

上述代码中,由于有double型的直接量599.0参与,整个表达式的结果为double。

double persent1=80/100;

上述代码中,结果为0.0.右边是int型数据,语法运算后的结果也为int类型,结果为0,再赋值给double型,将0转化为0.0.请对比下面的代码:

double persent2=80.0/100;

上述代码中,结果为0.8,右边表达式有double型直接量参与,运算结果为double型。



步骤三:byte、char、short转换为int的问题

byte、char、short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:

1)int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。

2)byte、char、short三种类型参与运算时,先一律转换为int类型再进行运算。请看如下示例代码:

byte b1=28;
byte b2=20;
byte b3=b1+b2;

上述代码在第三行会出现编译错误,原因是b1+b2的结果为int类型。改变上述代码如下:

byte b1=28;
byte b2=20;
int b3=b1+b2;

查看上述代码,会发现不会再出现编译错误。char类型、short类型和byte类型是相似的。


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务