问一道简单的题目

jacky_yp 2003-10-20 10:52:24
public class q{
public static void main(String args[]){
int a = 5;
System.out.println("Value is - " + ((a < 5) ? 4.6 :5));
}
}
为什么输出是5.0而不是5啊?
...全文
120 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArLi2003 2003-10-21
  • 打赏
  • 举报
回复
因为你的 ?运算要返回值,所以必须计算之前要先将值对等化,因为4.6 是浮点,所以5 也成了浮点
queena 2003-10-21
  • 打赏
  • 举报
回复
三目运算应该是一个整体看待,
整体中去找最高级别的然后转化要运算的数
如楼上所说的
伊奈 2003-10-21
  • 打赏
  • 举报
回复
例如:
int a=5;
float f=(float)a/2; //显式转换,高于/运算,先将操作数转换成float,再作/运算
伊奈 2003-10-20
  • 打赏
  • 举报
回复
三目运算符是一个整体,后面有double型的
自然结果为double型的
自动转换和显式转换的优先级是一样的,都是强制类型转换
优先级低于一元运算符(++,--),高于二元运算符(+,-等)
whywzf 2003-10-20
  • 打赏
  • 举报
回复
这是不一样的,因为a,b你声明了
上面的4.6和5没有声明,java把没声明的拿去做处理,根据我上面说的顺序转型(根据最“大”类型)
sunenvoy 2003-10-20
  • 打赏
  • 举报
回复
自动取精度高的
LoveRose 2003-10-20
  • 打赏
  • 举报
回复
虽然结果使这样的
但我很奇怪,他怎么会根据?后面的转型呢?
要知道(a<5)返回false后是不会执行?后面的表达式的
如: int a = 5;
int b = 6;
System.out.println("Value is - " + ((a < 5) ? ++b : ++a));
System.out.println(a);
System.out.println(b);
结果是a = 6; b = 6;
也就是说++b没有执行,不明白,他的输出结果怎么又会根据?后面的值转型呢?
whywzf 2003-10-20
  • 打赏
  • 举报
回复
java 计算时默认使用的是int类型。
然后它会以byte -> short -> int -> long -> float ->double 这个方向对结果进行自动转换。如要反过来要显式转换。
dovek2 2003-10-20
  • 打赏
  • 举报
回复
((a < 5) ? 4.6 :5))
经过这一条语句,你的5已经自动转换为double型了,因为4.6是double型的
chinaemin 2003-10-20
  • 打赏
  • 举报
回复
相当于:
if(a<5){
System.out.println("Value is - " + 4));
}else{
System.out.println("Value is - " + 5));
}
chinaemin 2003-10-20
  • 打赏
  • 举报
回复
(a < 5) ? 4 :5)
java中的三元运算符是指:
如果?(在此式中为a<5)前的判别式返回值为true,则此运算式的值为:之前的数或式子(在此式中为4);?(在此式中为a<5)前的判别式返回值为false,则此运算式的值为:之后的数或式子(在此式中为5)。
computerbird 2003-10-20
  • 打赏
  • 举报
回复
这个问题问的很不错哦
我也不知道怎么回答,不过应该和楼上说的差不多吧
应该会自动转型
jackyyp 2003-10-20
  • 打赏
  • 举报
回复
能说的详细点吗?
LoveRose 2003-10-20
  • 打赏
  • 举报
回复
这个问题很有意思,我也不知道答案,但是下面的代码输出却是5
public class q{
public static void main(String args[]){
int a = 5;
System.out.println("Value is - " + ((a < 5) ? 4 :5));
}
}

比较一下就知道,或许结果的取值与?后面的值有关了。
只能是猜测了,望有高手指点了
whywzf 2003-10-20
  • 打赏
  • 举报
回复
根据4.6自动转型了(casting)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧