怎么不是9呢?
哥们 三元运算符呀, (表达式1)? 表达式2:表达式3;
如果表达式1为true 则结果是表达式2的值。
如果表达式1为false,则结果是表达式3的值
4不大于4,所以是9.0
但是9.0却不是9怎么回事呢? 这个是因为参考了表达式2的类型了。
举个例子:
char x = 'X';
int i = 0;
System.out.println(true ? x : 0);
System.out.println(false ? i : x);
char x = 'X';
int i = 0;
System.out.println(true ? x : 0);
System.out.println(false ? i : x);运行这段结果,得到的却是:X88,可以看到三元运算符的结果,与表达式2的类型有直接的关系。
对于第一个表达式:true ? x :0 因为x的类型为char,当表达式为真的时候,结果类型为char,得到的结果是X。
对于第二个表达式:false ? i : x,因为i的类型为整型,当表达式为false的时候,结果类型为int,于是char向上转型为整型,输出88。
|