我知道有一种方法可以用简短的形式编写Java if语句。

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

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


当前回答

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

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

这里值得注意的事情:

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

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

其他回答

简单明了:

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

长版:

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

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

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

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

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

在Java 8中:

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

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指定条件结果

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

额外:好奇者

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

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

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

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

myVariable = (testCondition) ? someValue : anotherValue;

在哪里

()保存if ? 意味着然后 :表示其他

这和

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