以下代码中的条件运算符用法

时间:2013-09-21 04:44:52

标签: java

我正在使用条件运算符,如下所示。

String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");

现在我希望如果a.active为true且b.active也为true则结果应为Active但如果最初a.active失败则npo需要测试b.isactive只是打印现在不活动请告知我的以上实施是否正确。

4 个答案:

答案 0 :(得分:3)

您的实施已经是正确的。 “laziness”方面(只有在b.isActive()返回true时才调用a.isActive())由&&运算符的行为处理,即短路

来自section 15.23 of the JLS

  

条件和操作员&&就像& (§15.22.2),但仅在其左侧操作数的值为真时才计算其右侧操作数。

您使用this作为条件运算符的条件(第一个操作数)的事实是无关紧要的。所以你的代码相当于:

boolean active = a.isActive() && b.isActive();
String AccessType = (active ? "Active" : "NotActive");

我会对您的代码进行两处更改:

  • 我不会使用括号。他们没必要。你不是在调用一个方法 - 它只是一个条件运算符。
  • 我将变量重命名为accessType。 Java命名约定使用camelCase表示变量。

所以:

String accessType = a.isActive() && b.isActive() ? "Active" : "NotActive";

答案 1 :(得分:0)

看看condional Operator

   boolean isAActive = a.isActive();
   boolean isBActive = b.isActive();
   String AccessType = (isAActive && isBActive) ? "Active" : "NotActive";

而不是

String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");

使用括号中的条件

答案 2 :(得分:0)

为了便于阅读,您可以包装条件

a.isActive() && b.isActive() 
圆形括号()中的

(a.isActive() && b.isActive())

最后也不需要支架。所以你的最终状况应该是这样的:

(a.isActive() && b.isActive()) ? "Active" : "NotActive";

由于括号是可选的,因此条件可以重写为:

a.isActive() && b.isActive() ? "Active" : "NotActive";

答案 3 :(得分:0)

1. Now I want that if a.active is true and b.active is also true then
    the result should be Active

布尔状态= a.isActive()&& b.isActive();
  字符串值=状态? “活跃”:“无效”;

2. if initially a.active fails then no need to test b.isactive

Java跟随Short circuit Evaluation因此您无需关心java会自动执行该操作

相关问题