三元运算符与if/else的区别
三元运算符在进行判断时,要求两个变量是同一类型。这与if/else有很大的区别。
例如 a?b:c 表示
如果a为真则b,a为假则c
这里要求b和c类型相同,如果不同会强转
参考下方的例子
public static void main(String[] args) {
Object o1 = true ? new Integer(1): new Double(2.0);
System.out.println(o1);
System.out.println(false ? new Integer(1): new Double(2.0));
Object o2;
if (true){
o2=new Integer(1);
}else {
o2=new Double(2.0);
}
System.out.println(o2);
}
上述结果如下
可以看到第一个System.out.println并没有输出1,而是输出1.0 。
因为这里1是Integer类型,2.0是Double类型,编译时三元运算符要求1被强转为Double类型,变成1.0 。
而if/else没有这回事,该怎么输出就怎么输出。