2015-05-12 180 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容器」。

我希望這可以幫助您