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()

需要注意的地方:

  1. 条件在括号后面跟着一个问号。 这就是为什么我写(city.getName() == null)? 。 这里的问号就在这个条件之后。 易于看/读/猜!
  2. 冒号(:)的左侧值和冒号的右侧值(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"