Java 下面代码中的条件运算符用法
我正在使用条件运算符,如下所示Java 下面代码中的条件运算符用法,java,Java,我正在使用条件运算符,如下所示 String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive"); 现在我想知道,如果a.active为真,b.active也为真,那么结果应该是激活的,但如果最初a.active失败,那么npo需要测试b.isactive,现在只需打印Not active,请告知我的上述实现是否正确。看一看 而不是 String AccessType = (a.isActiv
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
现在我想知道,如果a.active为真,b.active也为真,那么结果应该是激活的,但如果最初a.active失败,那么npo需要测试b.isactive,现在只需打印Not active,请告知我的上述实现是否正确。看一看
而不是
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
使用括号中的条件查看
而不是
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
使用括号中的条件为了可读性,可以将条件包装起来
a.isActive() && b.isActive()
在圆括号中()
:
此外,端部不需要支架。因此,您的最终状况应该如下所示:
(a.isActive() && b.isActive()) ? "Active" : "NotActive";
a.isActive() && b.isActive() ? "Active" : "NotActive";
由于括号是可选的,因此可以将条件重新写入:
为了可读性,可以将条件包装起来
a.isActive() && b.isActive()
在圆括号中()
:
此外,端部不需要支架。因此,您的最终状况应该如下所示:
(a.isActive() && b.isActive()) ? "Active" : "NotActive";
a.isActive() && b.isActive() ? "Active" : "NotActive";
由于括号是可选的,因此可以将条件重新写入:
布尔状态=a.isActive()&&b.isActive()字符串值=状态?“活动”:“非活动” Java紧随其后,所以您无需担心Java会自动做到这一点 布尔状态=a.isActive()&&b.isActive()
字符串值=状态?“活动”:“非活动”
Java紧随其后,因此您无需担心Java会自动做到这一点您的实现已经是正确的了。“惰性”方面(如果
a.isActive()
返回true,则仅调用b.isActive()
)由&
操作符的行为处理,即短路
发件人:
条件and运算符&&与&(§15.22.2)类似,但仅当其左侧操作数的值为真时才计算其右侧操作数
将其用作条件运算符的条件(第一个操作数)与此无关。因此,您的代码相当于:
boolean active = a.isActive() && b.isActive();
String AccessType = (active ? "Active" : "NotActive");
不过,我会对您的代码进行两项更改:
- 我不会用括号。它们是不必要的。您没有调用方法-它只是一个条件运算符
- 我将变量重命名为
。Java命名约定对变量使用accessType
camelCase
您的实现已经正确。“惰性”方面(如果
a.isActive()
返回true,则仅调用b.isActive()
)由&
操作符的行为处理,即短路
发件人:
条件and运算符&&与&(§15.22.2)类似,但仅当其左侧操作数的值为真时才计算其右侧操作数
将其用作条件运算符的条件(第一个操作数)与此无关。因此,您的代码相当于:
boolean active = a.isActive() && b.isActive();
String AccessType = (active ? "Active" : "NotActive");
不过,我会对您的代码进行两项更改:
- 我不会用括号。它们是不必要的。您没有调用方法-它只是一个条件运算符
- 我将变量重命名为
。Java命名约定对变量使用accessType
camelCase
你不需要在条件结束时加括号,这里没有问题。原始代码已经很好了。在条件的末尾不需要括号。这里没有问题。原始代码已经很好了。谢谢juned,这将适用于两种情况,即如果a.active为true,b.active也为true,则将打印active,如果最初a.active失败,则将直接打印notactive。@tuntunwrete是,它将返回“active”只有在a.isActive和b.isActive都为真的情况下。是的,我同意,但我想,如果最初a.isActive失败,那么它不应该去检查b.active,它应该直接打印NotActive,它会这样做吗same@tuntunwretee这就是&&operator在java和大多数其他语言中的工作方式。如果第一个条件失败,则不检查其他条件。根本不需要使用括号
&
的优先级高于条件运算符的?
。感谢juned,这将适用于两种情况,即如果a.active为true,并且b.active也为true,则将打印active,如果最初a.active失败,则直接打印notactive。@tunwrete是,则将返回“active”只有在a.isActive和b.isActive都为真的情况下。是的,我同意,但我想,如果最初a.isActive失败,那么它不应该去检查b.active,它应该直接打印NotActive,它会这样做吗same@tuntunwretee这就是&&operator在java和大多数其他语言中的工作方式。如果第一个条件失败,则不检查其他条件。根本不需要使用括号&&
的优先级高于条件运算符的?
。无需将其置于括号中。你为什么认为这是必需的?没必要把它放在括号里。你为什么认为这是必需的?+1,你的解释和往常一样好,说明了最佳实践。+1,你的解释和往常一样好,说明了最佳实践。