Java 三元运算符逻辑解释

Java ternary operator logic explanation

谁能解释一下这行 java 代码在做什么?

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

我可以看到它在做什么,但我想知道如何修改它,以便如果它是登录页面,它只做一件事,否则做另一件事。

感谢您的帮助。

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

等同于:

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

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

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

基本上它评估谓词

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

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

而这个表达式 returns 那个值取决于布尔表达式,这个值是函数 returns 来自这个 class doc 的空字符串 "" 或字符串 "title-nav-container".

希望对你有所帮助

上面一行叫做ternary operator

Ternary Operator接受三个参数,它的sudo代码是

condition ? statement1 : statement2

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

语句 1: 如果条件为 true 那么 statement1 将执行

语句 2: 如果条件是 false 那么 statement2 将执行

现在看看你的代码块

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

if isThisLandingPage is true then StringUtils.EMPTY will execute else title-nav-container execute

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

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