这道java题输出结果为什么是9.0

为什么会是9.0,不应该是99.9或者9吗... 为什么会是9.0,不应该是99.9或者9吗 展开
 我来答
百毒千毒
2019-01-07 · TA获得超过4737个赞
知道大有可为答主
回答量:2499
采纳率:88%
帮助的人:851万
展开全部
厉害,一石激起千层浪,向你学习,够仔细的,看图!

反编译后的class文件:注意看对比后的数据类型前后一致的哦!

原码图

明白图:

你看,int,float是不是都无法接受啊?唯有double可以接受,因为java默认小数类型就是double类型!

应了那句话,当你想比对两个数字的时候,首先要做的就是,统一数据类型!

So:现在可以肯定的说,确实是类型提升的原因!

匿名用户
2019-01-06
展开全部
我觉得这个跟java的类型转换有关,java的基本类型存在自动提升为大的类型,这个99.9是浮点数,9是整数,这个表达式的结果会被提升为浮点数。所以输出9.0。
不知道是否理解对了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听时光清浅
2019-01-05 · 超过19用户采纳过TA的回答
知道答主
回答量:47
采纳率:75%
帮助的人:24.1万
展开全部

首先,需要弄清楚两个知识点:

  1. 运算符的优先级;

  2. 三目运算符,由?:组成,即(布尔表达式 ? 结果一 : 结果二),其实就是if else的简写。当 ? 前的表达式为true时,返回结果一;表达式结果为false时,返回结果二。

再看执行过程:先执行(x>4 ? 99.9 : 9)这段三目运算的代码,返回结果为9,再执行"value is "+这段,为字符串连接,就可得出返回结果为 value is 9 。

追问
可是答案是9.0而不是9呀
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
搬运工秉尘
2019-01-06 · TA获得超过156个赞
知道小有建树答主
回答量:164
采纳率:50%
帮助的人:38.5万
展开全部

(x>4 ? 99.9 : 9) 这段代码的意义是 如果x>4则返回99.9,否则返回9.

追问
为什么是9.0而不是9呢
追答

sorry,当时看到了,但是没仔细考虑这个问题;下面是我的理解,希望对你有所帮助。

因为99.9和9的数据类型不一样,一个是float,一个是int 。

三元运算符有这样的特性,当出现上述情况时,会返回精度高的数据类型。

网页链接 可以参考这个博客的内容。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-01-07
展开全部
根据判断知道 x>4 是 false, 那就只能输出后面的那个数字,又因为前面的 99.9 是浮点类型的,所以 9 会被转成浮点来计算,所以最后的输出是 9.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式