黑马程序员技术交流社区
标题:
关于类型转换的问题
[打印本页]
作者:
jing迪
时间:
2013-11-17 12:33
标题:
关于类型转换的问题
为啥byte b = 5;就能编译通过
但是float f = 1.0就报错了??
知道1.0默认double类型 但是5就能自动强转为byte 因为没有超过byte所表示范围
那么1.0为啥不能自动强转为float 1.0也没有超过float表示范围呀
作者:
零下五度的水
时间:
2013-11-17 12:58
float不是强转的问题,而是你要加一个标识符:1.0f
这个就像16进制是 0x 开头一样,是在底层定义的,
貌似所有的编程语言都这样
作者:
陈文杰
时间:
2013-11-17 13:14
要知道byte a = 5;的5其实不是int, 它其实是int literal。在这个时候编译器会自动把5变成byte,因为5是直接赋值到a的,所以编译器知道5应该是byte,详细请对编译器认知深刻大牛来解说,我了解有这么回事。
1.0默认是double,缩小类型需要强制转换。注意类型强制转换规则。
作者:
段光宇
时间:
2013-11-17 13:29
1.byte b=5;
这里5为int类型,把它赋给byte对象b时,系统底层会默认把5这个int类型转为byte类型,所以正确
2.float f = 1.0
1.0为浮点数,一个浮点数没有后缀F,则默认为double型,把double型赋给float型,相当于把精度高的型转为精度低的型,错误
作者:
黄炳期
时间:
2013-11-17 14:40
帖子已分类
认真总结吸收解答,收获大大滴~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2