黑马程序员技术交流社区

标题: 关于强制转换的问题?求解答 [打印本页]

作者: linda2906881980    时间: 2015-5-4 23:09
标题: 关于强制转换的问题?求解答
class Test011
{
        public static void main(String[] args)
        {       
       
                float a= 2.0f;
                float b =3.0f;
                float c =a + b;
                System.out.println(c);
        }
}

a和b都是float类型的,a+b相加时,a和b的类型不得强制转换为double吗?为什么a+b后赋值给c不报错呢?
作者: tream    时间: 2015-5-4 23:18

手头正好有本书学习一下

作者: wangyu    时间: 2015-5-4 23:22
本帖最后由 wangyu 于 2015-5-4 23:27 编辑

楼上说的差不多,但是注意 如果是低于int类型的,都会自动提升到int。高于int就是以两个变量高的为准做提升
作者: l763631191    时间: 2015-5-4 23:25
本帖最后由 l763631191 于 2015-5-4 23:26 编辑

所有的byte型、short型和char的值将被提升
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。所以a+b就是float类型的再运算。结果也就是float类型的




作者: yihuihua    时间: 2015-5-4 23:27
a和b的类型不得强制转换为double
为啥呀?
作者: tream    时间: 2015-5-4 23:31
yihuihua 发表于 2015-5-4 23:27
a和b的类型不得强制转换为double
为啥呀?

还是没仔细看呀,有double类型的时候另一个才会强转,两个都是float
作者: 曹宇    时间: 2015-5-4 23:32
float+float 结果如果不超出float范围就是float
超出范围还是float只是结果会成为负数那样的 除非你用double接收


以上为猜测...请自行验证.
作者: 1017161726    时间: 2015-5-4 23:38
两个类型一样的。不用强转,如果有一个是double,就要墙砖
作者: linda2906881980    时间: 2015-5-5 01:05
tream 发表于 2015-5-4 23:18
手头正好有本书学习一下

非常感谢:victory:
作者: linda2906881980    时间: 2015-5-5 01:07
wangyu 发表于 2015-5-4 23:22
楼上说的差不多,但是注意 如果是低于int类型的,都会自动提升到int。高于int就是以两个变量高的为准做提升 ...

明白了  谢谢
作者: linda2906881980    时间: 2015-5-5 01:09
l763631191 发表于 2015-5-4 23:25
所有的byte型、short型和char的值将被提升
如果一个操作数是long型,计算结果就是long型;
如果一个操作数 ...

现在明白了谢谢
作者: linda2906881980    时间: 2015-5-5 01:12
1017161726 发表于 2015-5-4 23:38
两个类型一样的。不用强转,如果有一个是double,就要墙砖

低于int型的  不论两个类型一样不一样,都要转换成int 。谢谢了
作者: 下一页5    时间: 2015-5-5 01:26
求楼主答案啊啊啊 啊




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