Java三元运算符逻辑解释

时间:2015-05-12 09:26:55

标签: java ternary-operator

有人可以解释一下这行java代码在做什么吗?

public String getTitleNavContainer(boolean isThisLandingPage) {
    return isThisLandingPage ? StringUtils.EMPTY : "title-nav-container";
}

我可以看到它在做什么,但我想知道如何修改它,以便如果它是登陆页面,它会做一件事,否则做其他事情。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

return isThisLandingPage ? StringUtils.EMPTY : "title-nav-container";

与:

相同
public String getTitleNavContainer(boolean isThisLandingPage) {
    if ( isThisLandingPage ){
      return StringUtils.EMPTY;
    }
    else{
      return "title-nav-container";
    }
}

它只是一种较短的编写方式,使代码更易于阅读。

答案 1 :(得分:1)

您使用三元运算符(或条件运算符)是Java if / then / else语法的替代方法,但它超越了它,甚至可以在Java语句的右侧使用。

基本上它会评估谓词

;(boolean expression)   (if it is true)     (if it is false)

isThisLandingPage    ? StringUtils.EMPTY : "title-nav-container";

此表达式根据布尔表达式返回该值,该值是函数返回空字符串的值""来自此class doc或字符串" title-nav-container"。

我希望这可以帮到你

答案 2 :(得分:1)

上述行称为ternary operator

Ternary Operator需要三个参数,其sudo代码为

condition ? statement1 : statement2

条件:这部分应该有有效的条件语句,并且应该只返回布尔值

声明1:如果条件为true,则statement1将执行

语句2:如果条件为false,则statement2将执行

现在看看你的代码块

public String getTitleNavContainer(boolean isThisLandingPage) {
   return isThisLandingPage ? StringUtils.EMPTY : "title-nav-container";
}

如果isThisLandingPagetrue,则StringUtils.EMPTY将执行其他title-nav-container执行

为了快速理解,请将代码转换为if-else语句

if (isThisLandingPage)
{
   return StringUtils.EMPTY;
}
else
{
   return title-nav-container;
}