Java if语句的简写形式

我知道有一种方法可以简短地编写Java if语句。

if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}

有谁知道如何把以上5行的简写成一行吗?

943028 次浏览
name = (city.getName() != null) ? city.getName() : "N/A";

使用三元运算符:

name = ((city.getName() == null) ? "N/A" : city.getName());

我认为你有反向的条件-如果它是空的,你想要的值是“N/A”。

如果城市为空呢?在这种情况下,你的代码就会完蛋。我还要再检查一下:

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";

你可以用简短的形式写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";
}

的吗?: Java中的操作符

在Java中,你可以这样写:

if (a > b) {
max = a;
}
else {
max = b;
}

根据单一条件将单个变量设置为两种状态之一是if-else的常见用法,因此为它设计了一种快捷方式,即条件操作符?:。使用条件操作符,你可以在一行中重写上面的例子,像这样:

max = (a > b) ? a : b;

(a > b) ?A: b;是返回两个值之一(a或b)的表达式。条件(a > b)被测试。如果为真,则返回第一个值a。如果为false,则返回第二个值b。无论返回哪个值都依赖于条件测试> b。条件可以是返回布尔值的任何表达式。

name = ( (city.getName() == null)? "N/A" : city.getName() );

首先检查条件(city.getName() == null)。如果是,则将"N/A"赋值给name或简单地赋值给name="N/A",否则将city.getName()的值赋值给name,即name=city.getName()

这里值得注意的事情:

  1. 条件在括号中,后面跟着一个问号。这就是为什么我写(city.getName() == null)?。这里,问号就在条件后面。甚至很容易看/读/猜!
  2. 冒号左边的值(:)和冒号右边的值 (a)当condition为真时,赋给冒号左边的值,否则赋给变量冒号右边的值。李< / >

这里有一个引用:http://www.cafeaulait.org/course/week2/43.html

我总是忘记如何使用?: 三元运算符。这个补充的回答是一个快速的提醒。它是if-then-else的缩写。

myVariable = (testCondition) ? someValue : anotherValue;

在哪里

  • ()保存if
  • ?表示then
  • :表示else

这和

if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}

在Java 8中:

name = Optional.ofNullable(city.getName()).orElse("N/A")

使用org.apache.commons.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");

< em >简单,明确:< / em >

String manType = hasMoney() ? "rich" : "poor";

长版:

      String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}

或者我如何使用它来让其他代码读者更清楚:

 String manType = "poor";
if (hasMoney())
manType = "rich";

1.可以删除括号换行符

if (city.getName() != null) name = city.getName(); else name = "N/A";

2.在java中可以使用?:操作符。

语法:

Variable = Condition ? BlockTrue : BlockElse;

所以在你的代码中你可以这样做:

name = city.getName() == null ? "N/A" : city.getName();

3.布尔分配条件结果

boolean hasName = city.getName() != null;

额外的: 对好奇的

在一些基于JAVA的语言中,比如Groovy,你可以使用这种语法:

name = city.getName() ?: "N/A";

操作符?:将我们所请求的变量返回的值赋值。在本例中,如果不是null,则返回city.getName()的值。

这是一行代码

name = (city.getName() != null) ? city.getName() : "N/A";

下面是它如何工作的例子,在js文件中运行下面的代码并理解结果。这个("Data" != null)是条件,就像我们在正常的if()"Data" is语句中做的那样,当这个条件为真时。这个" : "充当else,而"N/A"是else条件的语句。希望这能帮助你理解其中的逻辑。

name = ("Data" != null) ? "Data" : "N/A";


console.log(name);

你可以这样让它变得更简单:

name = city.getName() == null ? city.getName() : "N/A"
在Java 8+中,你有两个解决方案。 使用简短的if语句:

Objects.nonNull(city.getName())? city.getName(): "N/A";

在你的情况下,更好的解决方案是使用可选:

Optional.ofNullable(city)
.map(City::getName)
.orElse("N/A");