Java if语句的简写形式

时间:2012-01-17 16:58:04

标签: java if-statement ternary-operator

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

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

有谁知道如何将上述5行的短格式写成一行?

15 个答案:

答案 0 :(得分:336)

使用三元运算符:

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

我认为你有条件倒退 - 如果它是null,你想要的值是“N / A”。

如果城市为空怎么办?在这种情况下,你的代码*会打到床上。我再添一张支票:

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

答案 1 :(得分:24)

这样做的方法是使用三元运算符:

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

但是,我相信你上面的代码中有一个拼写错误,你的意思是说:

if (city.getName() != null) ...

答案 2 :(得分:24)

为避免两次调用.getName(),我会使用

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

答案 3 :(得分:16)

  

? :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。无论返回哪个值取决于条件测试,a> 1。湾条件可以是返回布尔值的任何表达式。

答案 4 :(得分:15)

在java 8中:

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

答案 5 :(得分:14)

我一直在伪造如何使用?: ternary operator。这个补充答案是一个快速提醒。它是if-then-else的简写。

myVariable = (testCondition) ? someValue : anotherValue;

,其中

  • ()拥有if
  • ?表示then
  • :表示else

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

答案 6 :(得分:8)

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

答案 7 :(得分:6)

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

答案 8 :(得分:3)

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

首先检查条件(city.getName() == null)。如果是,则将"N/A"分配给姓名或仅name="N/A",或者将city.getName()中的值分配给名称,即name=city.getName()

要注意的事情:

  1. 条件在括号中,后跟一个问号。这就是我写(city.getName() == null)?的原因。这个问号就在这个条件之后。易于查看/阅读/猜测!
  2. 冒号(:)左侧的值和冒号右侧的值 (a)当条件为真时,分配冒号左侧的值,否则将冒号的右侧赋值给变量。
  3. 这里有一个参考:http://www.cafeaulait.org/course/week2/43.html

答案 9 :(得分:3)

这是一个行代码

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

这是示例工作方式,在js文件中的代码下运行并了解结果。此("Data" != null)是条件,就像我们在常规if()中所做的一样,并且"Data"是在条件变为真时的语句。 " : "充当else,而"N/A"是else条件的声明。希望这可以帮助您理解逻辑。

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

console.log(name);

答案 10 :(得分:2)

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

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

答案 11 :(得分:2)

简单&明确:

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

长版本:

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

或我如何使用它来清楚其他代码阅读器:

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

答案 12 :(得分:1)

  

您可以删除括号换行符

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

您可以在java中使用?:运算符。

<强>语法:

Variable = Condition ? BlockTrue : BlockElse;

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

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

布尔

指定条件结果
boolean hasName = city.getName() != null;

EXTRA: 好奇的

在某些基于JAVA Groovy的语言中,您可以使用以下语法:

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

您可以在Groovy中执行此操作,因为如果您要求此条件:

if (city.getName()) {
    //returns true if city.getName() != null
} else {
    //returns false if city.getName() == null
}

因此运算符?:分配从条件返回的值。在这种情况下,city.getName()的值如果不是null

答案 13 :(得分:0)

您可以在java中使用三元运算符。

<强>语法:

Condition ? Block 1 : Block 2

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

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

有关详细信息,请参阅this资源。

答案 14 :(得分:-3)

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