Java条件运算符三种可能的结果
Java Conditional operator three possible results
如何将您在下面看到的条件代码分解为常规 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)
*/
条件(三元)运算符的工作方式如下:
(predicate) ? (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");
另请注意,您正在使用 ==
运算符来比较字符串。在这种特殊情况下,这不会有任何区别,请谨慎使用...
您的代码可以这样拆分:
String message;
if ("A" == "A") {
if ("B" == "B") {
message = "1";
} else {
message = "2";
}
} else {
message = "3";
}
System.out.print(message);
三元运算符的工作方式类似于 if
语句 returns 一个值。但是它只能是一个表达式可以站立的地方,所以它不能单独站立。
?
之前的部分是条件,之后的部分是 then 表达式。 :
后面是else 表达式。
嵌套的三元 ?:
运算符非常难读,绝对应该避免。
如果我理解正确并且 A、B 和 C 是布尔值,这可能就是您想要的:
System.out.print( ((!A)? "3" : (!B)? "2" : "1"));
对于字符串,您必须确保使用 A.equals(B)。
如何将您在下面看到的条件代码分解为常规 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)
*/
条件(三元)运算符的工作方式如下:
(predicate) ? (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");
另请注意,您正在使用 ==
运算符来比较字符串。在这种特殊情况下,这不会有任何区别,请谨慎使用...
您的代码可以这样拆分:
String message;
if ("A" == "A") {
if ("B" == "B") {
message = "1";
} else {
message = "2";
}
} else {
message = "3";
}
System.out.print(message);
三元运算符的工作方式类似于 if
语句 returns 一个值。但是它只能是一个表达式可以站立的地方,所以它不能单独站立。
?
之前的部分是条件,之后的部分是 then 表达式。 :
后面是else 表达式。
嵌套的三元 ?:
运算符非常难读,绝对应该避免。
如果我理解正确并且 A、B 和 C 是布尔值,这可能就是您想要的:
System.out.print( ((!A)? "3" : (!B)? "2" : "1"));
对于字符串,您必须确保使用 A.equals(B)。