2015-05-12 146 views
-3

有人能解释一下这行代码是干什么的吗?Java三元运算符逻辑解释

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

我可以看到它在做什么,但我不知道我怎么会修改这一所以,如果它是登陆页它做一件事情,否则做其他的事情。

感谢您的帮助。

+0

'...没有一两件事,否则做一些else' - 什么事? – Eran

回答

1

上面一行被称为ternary operator

Ternary Operator需要三个参数及其须藤代码

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; 
} 
+0

这是一个很好的解释,谢谢 – user2713512

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

是一样的:

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

这只是一个写短了路,使代码更易于阅读。

+0

我现在看到。谢谢 – user2713512

1

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

基本上它计算谓词

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

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

而这个表达式返回取决于布尔表达式值,该值是该函数将返回空字符串“”从这个class doc或字符串“标题的一个-nav容器”。

我希望这可以帮助您