首页 > 代码库 > java三元运算符与类型强制转换
java三元运算符与类型强制转换
public class yunsuanfu { public static void main(String[] args) { int a = 5; System.out.println("value is "+((a<5) ? 10.9 : 9)); } }
刚刚看到的一道面试题,第一眼看很简单,就一个三元运算符,如果你觉得输出的结果是9,那就中了这道题的陷阱了,注意下“((a<5) ? 10.9 : 9)”,里面有一个10.9,而后面跟了一个9,这是java就会根据运算符的精确度类型进行自动类型转换,由于前面有一个10.9,所以后面的9会被转换成9.0,所以输出的是9.0.
再看看另外一个
char x=‘x‘; int i =10; System.out.println(false ? i : x); System.out.println(false ? 10 : x); }
输出的结果是
120
x
int i=10;中i是一个变量,所以第一个输出x被强制转换成int型了,应为i是int类型,x的值转换成int值是120,所以第一个输出120。
至于第二个输出,java规范中提到,当后两个表达式有一个是常量表达式(上面指10),另外一个类型是T(上面指char)时,而常量表达式可以被T表示时,输出结果是T类型。
因为10是常量,可以被char表示,输出的结果是char型的,所以是x。
是不是觉得有点坑~~~
java三元运算符与类型强制转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。