我知道有因爲如果以短形式聲明簡稱爲Java如果聲明
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
沒有人知道如何寫簡寫形式,上述5條線成一行編寫Java的方式...
我知道有因爲如果以短形式聲明簡稱爲Java如果聲明
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
沒有人知道如何寫簡寫形式,上述5條線成一行編寫Java的方式...
使用三元運算:
name = ((city.getName() == null) ? "N/A" : city.getName());
我覺得你的條件向後 - 如果它是空,你想要的值是「不適用」。
如果城市爲空,該怎麼辦?在這種情況下,你的代碼*會打到牀上。我想補充另一個檢查:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
name = (city.getName() != null) ? city.getName() : "N/A";
這樣做是三元操作方式:
name = city.getName() == null ? city.getName() : "N/A"
不過,我相信你在你的代碼有一個錯字之上,你的意思是說:
if (city.getName() != null) ...
爲了避免調用.getName()
兩次,我會用
name = city.getName();
if (name == null) name = "N/A";
在具有可變城市的多用戶系統中,可能存在干預'city.setName(null)'。你的答案整齊地處理。 – emory 2012-01-17 18:14:17
您可以簡寫爲if, else if, else
陳述。例如:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
這是短形式:
Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
isCapitalName = "";
} else if(isCapital) {
isCapitalName = "Capital";
} else {
isCapitalName = "City";
}
這還沒有問到-1。 – Makky 2015-07-23 15:37:24
的? :經營者在Java中
在Java中,你可能會這樣寫:
if (a > b) {
max = a;
}
else {
max = b;
}
設置一個變量,以基於單一條件的兩個狀態之一是如果其他一個快捷方式具有這樣的普遍使用爲它設計的,有條件的操作符,?:。使用條件操作者可以把上面的例子中這樣一行:
max = (a > b) ? a : b;
(A> B)? a:b;是返回兩個值之一a或b的表達式。測試條件(a> b)。如果它是真的,則返回第一個值a。如果它爲假,則返回第二個值b。無論返回哪個值都取決於條件測試,a> b。條件可以是任何返回布爾值的表達式。
name = ((city.getName() == null)? "N/A" : city.getName());
首先檢查條件(city.getName() == null)
。如果是,則將"N/A"
分配給名稱或簡單地將name="N/A"
或city.getName()
的值分配給名稱,即name=city.getName()
。
事情看出來這裏:
(city.getName() == null)?
的原因。這裏的問號就在條件之後。易於看/讀/猜!:
)和冒號值右值 (a)當條件爲真時,冒號的左邊值被賦值,否則冒號的右值賦值給變量。我總是忘卻瞭如何使用?:
ternary operator。這個補充答案是一個快速提醒。它是if-then-else
的簡寫。
myVariable = (testCondition) ? someValue : anotherValue;
其中
()
保持if
?
裝置then
:
裝置else
它是一樣的
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
在Java 8:
使用org.apache.commons.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
簡單&明確:
String manType = hasMoney() ? "rich" : "poor";
長版:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
或如何我使用它是明確爲其他代碼的讀者:
String manType = "poor";
if (hasMoney())
manType = "rich";
google [java中的三元運算符](https://www.google.com/search?q=ternary+operator+java :) :) – CoolBeans 2012-01-17 17:00:47
我假設你的'if'邏輯錯了。 – NPE 2012-01-17 17:00:58
'if(city.getName()!= null){name = city.getName();} else {name =「N/A」}' – 2012-01-17 17:03:15