Java条件运算符的三种可能结果

时间:2019-07-02 08:47:08

标签: java conditional-operator

由于有三个结果,因此如何将下面看到的条件代码分解为常规的if语句以了解其工作原理。

我更改了值只是为了了解它的去向:

System.out.print(("A"=="A")?("B"=="B")?"1":"2":"3");


 /*
 if A is False (Output = 3)
 if B is False (Output = 2)
 if A&B are True (Output = 1)
 */

3 个答案:

答案 0 :(得分:2)

您的代码可以像这样拆分:

String message;
if ("A" == "A") {
    if ("B" == "B") {
        message = "1";
    } else {
        message = "2";
    }
} else {
    message = "3";
}
System.out.print(message);

三元运算符的工作方式类似于返回值的if语句。但是,只能在一个表达式可以站立的地方,因此它不能自己站立。 ?之前的部分是条件,之后的部分是then表达式。 :后面是else表达式。 嵌套三元?:运算符很难读,应明确避免。

答案 1 :(得分:1)

条件(三元)运算符的工作方式如下:

  

(谓词)? (onTrueValue):(onFalseValue);

所以您的情况是:

("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");

要进行以下操作:

Is A equal to A? 
If yes -> return Is B equal to B
    If yes -> return 1;
    If no -> return 2;
If no -> return 3;

类似于:

condition1 ? (condition2 ? val1 : val2) : val3;

以及一些验证测试

// Prints 1 as both conditions are true.
System.out.println("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");
// Prints 3 as first condition fails.
System.out.println("A"=="notA" ? ("B"=="B" ? "1" : "2") : "3");
// Prints 2 as second condition fails.
System.out.println("A"=="A" ? ("B"=="notB" ? "1" : "2") : "3");

还请注意,您正在使用==运算符来比较字符串。在这种特殊情况下,谨慎使用它不会有任何区别...

答案 2 :(得分:1)

如果我正确理解您,并且A,B和C是布尔值,则可能是您想要的:

System.out.print( ((!A)? "3" : (!B)? "2" : "1"));

对于字符串,您必须确保使用A.equals(B)。