public class Test {
public static void main(String[] args) {
// (true ? true : false) ? false : false
boolean left = (a() ? b() : c()) ? d() : e();
System.out.print(left + "\n");
// true ? true : (false ? false : false)
boolean right = a() ? b() : (c() ? d() : e());
System.out.print(right + "\n");
// true ? true : false ? false : false
boolean result = a() ? b() : c() ? d() : e();
System.out.print(result + "\n");
}
public static boolean a() {
System.out.print("a\t");
return true;
}
public static boolean b() {
System.out.print("b\t");
return true;
}
public static boolean c() {
System.out.print("c\t");
return false;
}
public static boolean d() {
System.out.print("d\t");
return false;
}
public static boolean e() {
System.out.print("e\t");
return false;
}
}
运行得到的结果:
a b d false
a b true
a b true
表达式1:(true ? true : false) ? false : false
表达式2:true ? true : (false ? false : false)
表达式3:true ? true : false ? false : false
由运行的结果分析:
表达式3与表达式2的结合性相同;
但是运行得到的结果: a b true ,表明条件运算符的运算顺序是按照从左至右的顺序。
通过以上分析,我认为:
条件运算符(?:)的结合性是从右至左,而运算顺序是从左至右。
我的理解正确吗?求大神解惑。