Java If语句的缩写
我知道有一种方法来写简短的forms的Java语句
if (city.getName() != null) { name = city.getName(); } else { name="N/A"; }
有没有人知道如何写一行以上5行以上的简短forms…
使用三元运算符:
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"
不过,我相信你在你的代码中有一个错字,你的意思是说:
if (city.getName() != null) ...
为了避免调用.getName()
两次我会使用
name = city.getName(); if (name == null) name = "N/A";
这个? :运算符在Java中
在Java中,你可能会写:
if (a > b) { max = a; } else { max = b; }
根据单个条件将单个variables设置为两个状态之一是if-else的常见用法,即为其devise了快捷方式,条件运算符?:。 使用条件运算符,你可以像这样在一行中重写上面的例子:
max = (a > b) ? a : b;
(a> b)? a:b; 是返回两个值之一a或b的expression式。 条件(a> b)被testing。 如果是,则返回第一个值a。 如果为false,则返回第二个值b。 无论返回哪个值都取决于条件testing,a> b。 条件可以是任何返回布尔值的expression式。
我一直在伪造如何使用?:
三元运算符 。 这个补充答案是一个快速提醒。 这是if-then-else
简写。
myVariable = (testCondition) ? someValue : anotherValue;
哪里
-
()
包含if
-
?
意味着then
-
:
意思是else
这是一样的
if (testCondition) { myVariable = someValue; } else { myVariable = anotherValue; }
你可以用简写的forms写if, else if, else
。 例如:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean) String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
这是简短的forms:
Boolean isCapital = city.isCapital(); String isCapitalName; if(isCapital == null) { isCapitalName = ""; } else if(isCapital) { isCapitalName = "Capital"; } else { isCapitalName = "City"; }
name = city.getName()==null ? city.getName() : "N/A";
在java 8:
name = Optional.ofNullable(city.getName()).orElse("N/A")
name = ( (city.getName() == null)? "N/A" : city.getName() );
首先检查条件(city.getName() == null)
。 如果是,则将"N/A"
分配给名称或简单地将name="N/A"
,否则将从city.getName()
分配给name,即name=city.getName()
。
需要注意的地方:
- 条件在括号后面跟着一个问号。 这就是为什么我写
(city.getName() == null)?
。 这里的问号就在这个条件之后。 易于看/读/猜! - 冒号(:)的左侧值和冒号的右侧值(a)当条件为真时,冒号的左侧值被赋值,否则冒号的右侧值被赋值给variables。
这里有一个参考: http : //www.cafeaulait.org/course/week2/43.html
使用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";
name = city.getName()!=null?city.getName():"N/A"