Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下面代码中的条件运算符用法_Java - Fatal编程技术网

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");
不过,我会对您的代码进行两项更改:

  • 我不会用括号。它们是不必要的。您没有调用方法-它只是一个条件运算符
  • 我将变量重命名为
    accessType
    。Java命名约定对变量使用
    camelCase
因此:


您的实现已经正确。“惰性”方面(如果
a.isActive()
返回true,则仅调用
b.isActive()
)由
&
操作符的行为处理,即短路

发件人:

条件and运算符&&与&(§15.22.2)类似,但仅当其左侧操作数的值为真时才计算其右侧操作数

将其用作条件运算符的条件(第一个操作数)与此无关。因此,您的代码相当于:

boolean active = a.isActive() && b.isActive();
String AccessType = (active ? "Active" : "NotActive");
不过,我会对您的代码进行两项更改:

  • 我不会用括号。它们是不必要的。您没有调用方法-它只是一个条件运算符
  • 我将变量重命名为
    accessType
    。Java命名约定对变量使用
    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,你的解释和往常一样好,说明了最佳实践。