黑马程序员技术交流社区

标题: 数据类型转型的问题 [打印本页]

作者: 冯伟    时间: 2012-9-21 21:36
标题: 数据类型转型的问题
本帖最后由 sclsfw 于 2012-9-22 15:12 编辑

byte b=4;//编译通过
float f=4.0;//编译失败
整型默认是int,浮点型默认是double,毕老师说4是个整数常量,是固定的,赋值时会先判断是否在byte范围内再赋值,那么4.0也是个浮点常量,同样是固定的,在float范围内,为什么double型的4.0赋给float要加f做强制转换,而int型的4赋给byte却不用强制转换
作者: 程振    时间: 2012-9-21 21:53
byte是8位二进制表示,是单字节,存储范围是-128~127。
因为4在存储范围内,转换没问题,编译通过。
如果 byte b = 500; 这样就编译失败,因为byte不能存储这么大的整形,隐私转换失败。

对于float f = 4.0; 因为精度问题,double的精度大,转成float类型是会损失精度,需显示转换。
作者: 霍永刚    时间: 2012-9-21 21:59
byte b =4在以上声明中,整数4从int类型隐式转换为 byte 类型。如果整数超出了byte类型的范围128到127,则将发生编译错误。
float a=4.0这样写会出错,double数据转换为float数据要丢失精度,所以float型变量强制后面用f结尾,
double a=4.0;这样就不会有错,不过性能方面可能会差一些.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2