Java 强制转换相关

在类型转换中,需要注意的是强制类型转换(即显式类型转换),与自动转换类型不同,强制类型转换后的数据类型全部由程序员本身设置,相应的,没把控好数据类型的话,也会搞出问题来!强制转换类型需要注意以下几点:
1、强制类型转换可能导致溢出或损失精度
2、在把容量大的类型转换为容量小的类型时必须使用强制类型转换
3、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
溢出相关:
Java 强制转换相关
所谓溢出,就是事物的大小超出环境容纳量后,重新从这个数据类型的最小值或者最大值开始计算的情形,得出的结果没有意义。如,一个桶本身只有一半的容量(正负初始值)不断地往桶里装水,桶装满后,将桶完全清空,再去装水,满了就清空,直到能装完为止。得出的结果没有意义,违反原本的目的。数据溢出后,还是会按照原先的数值类型计算,如正数的数值超出了127后,会一下子变成-128(物极必反原理),以最大范围值再次计算值,既是从-128开始,不断加上去,再次超过127后,又会从最小值开始增加,负数则是从最大值127减小。为避免溢出,使用者要根据实际需求定义类型。
损失精度
Java 强制转换相关
精度是在小的范围内更精确,范围越大,精度越小(既是说精度丢失,只有在数据足够大的情况下才会产生)需要注意转换类型之间的大小。
以溢出和精度丢失作为比较,溢出是在本类型容纳中进行,最终的结果是不是正确的值,但不存在精度的误差。精度丢失是相互之间的转换,如大桶的水转到小桶去,两个桶之间的容量相差越大,丢失越多(难免有水漏了),如果两个桶相差不大,精度就不会丢失,但是!转换后的类型如果不够装的话,还是会出现溢出,如图,intValueA的值改成128的话,转换后就是-1的输出值了。
浮点数:
Java 强制转换相关
浮点数就比较简单了,舍弃小数点后的数值等同于是截断,不过是默认截取小数点前的数值作为输出结果而已。简单易懂,在数值精确要求不高时可以使用