三元运算符的两个右手表达式是否必须具有兼容的类型?
我的练习测试书包含了关于三元算子的这个问题:
// What is the output of the following application?
public class Transportation {
public static String travel(int distance) {
return(distance < 1000 ? "train" : 10);
}
public static void main(String[] args) {
travel(500);
}
}
它不编译。给出的解释如下:
三元运算要求两个右侧表达式的数据类型兼容。在此示例中,外部三元运算的第一个右侧表达式的类型为 String,而第二个右侧表达式的类型为 int 类型。由于这些数据类型不兼容,因此代码不会编译,并且选项 C 是正确的答案。
这真的是原因吗?在我看来,这个例子没有编译,因为10不是字符串,而字符串是方法必须返回的内容。我问是因为编译和运行没有问题。System.out.println(distance < 1000 ? "train" : 10);