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

为什么会是9.0,不应该是99.9或者9吗
2025-02-27 01:50:24
推荐回答(5个)
回答1:

厉害,一石激起千层浪,向你学习,够仔细的,看图!

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

原码图

明白图:

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

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

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

回答2:

我觉得这个跟java的类型转换有关,java的基本类型存在自动提升为大的类型,这个99.9是浮点数,9是整数,这个表达式的结果会被提升为浮点数。所以输出9.0。
不知道是否理解对了。

回答3:

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

  1. 运算符的优先级;

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

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

回答4:

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

回答5:

根据判断知道 x>4 是 false, 那就只能输出后面的那个数字,又因为前面的 99.9 是浮点类型的,所以 9 会被转成浮点来计算,所以最后的输出是 9.0