Java if语句的简写形式

Mak*_*kky 173 java if-statement ternary-operator

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

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}
Run Code Online (Sandbox Code Playgroud)

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

duf*_*ymo 374

使用三元运算符:

name = ((city.getName() == null) ? "N/A" : city.getName());
Run Code Online (Sandbox Code Playgroud)

我认为你有条件向后 - 如果它是null,你想要的值是"N/A".

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

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
Run Code Online (Sandbox Code Playgroud)

  • 风格和品味的问题:我喜欢明确布尔条款的分组. (17认同)
  • +1,虽然你有多余的括号.我会写:`name = city.getName()== null?"N/A":city.getName();` (10认同)
  • 无论如何 - 我使用了德莫根的定理并得到了你所需要的东西.只要您正确表达逻辑,就无需编辑. (4认同)
  • 不会`String cityName = city.getName();`如果`city == null`,则抛出`NullPointerException`?因此,我说你的中间解决方案绝对是最好的(PS和我赞成'不必要的'括号!人们需要记住,99%的编码是与其他人(以及你未来的自己)沟通,而不是编译器 - 否则我们用c!) (4认同)
  • 仅供参考,外括号是不必要的.你可以做`name = city.getName()== null?"N/A":city.getName()` (2认同)

Pet*_*rey 27

为了避免.getName()两次打电话我会用

name = city.getName();
if (name == null) name = "N/A";
Run Code Online (Sandbox Code Playgroud)

  • 在具有可变城市的多用户系统中,可能会有一个中间的`city.setName(null)`。您的答案可以很好地处理这一问题。 (2认同)

Sam*_*erg 25

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

name = city.getName() == null ? city.getName() : "N/A"
Run Code Online (Sandbox Code Playgroud)

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

if (city.getName() != null) ...
Run Code Online (Sandbox Code Playgroud)


Rez*_*ngi 19

的?:Java中的运算符

在Java中你可以写:

if (a > b) {
  max = a;
}
else {
  max = b;
}
Run Code Online (Sandbox Code Playgroud)

基于单个条件将单个变量设置为两个状态之一是if-else的常见用法,即已为其设计了一个快捷方式,条件运算符,?:.使用条件运算符,您可以在一行中重写上面的示例,如下所示:

max = (a > b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

(a> b)?a:b; 是一个表达式,它返回两个值a或b中的一个.测试条件(a> b).如果为真,则返回第一个值a.如果为false,则返回第二个值b.无论返回哪个值取决于条件测试,a> b.条件可以是返回布尔值的任何表达式.


dig*_*ebs 17

在java 8中:

name = Optional.ofNullable(city.getName()).orElse("N/A")
Run Code Online (Sandbox Code Playgroud)


Sur*_*gch 16

我总是在伪造如何使用?: 三元运算符.这个补充答案是一个快速提醒.这是简写if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;
Run Code Online (Sandbox Code Playgroud)

哪里

  • () 持有 if
  • ? 手段 then
  • : 手段 else

它是一样的

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}
Run Code Online (Sandbox Code Playgroud)


Ign*_*ers 15

1.您可以删除括号换行符

if (city.getName() != null) name = city.getName(); else name = "N/A";
Run Code Online (Sandbox Code Playgroud)

2.你可以在java中使用?:运算符。

句法:

Variable = Condition ? BlockTrue : BlockElse;
Run Code Online (Sandbox Code Playgroud)

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

name = city.getName() == null ? "N/A" : city.getName();
Run Code Online (Sandbox Code Playgroud)

3.布尔赋值条件结果

boolean hasName = city.getName() != null;
Run Code Online (Sandbox Code Playgroud)

额外: 为了好奇

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

name = city.getName() ?: "N/A";
Run Code Online (Sandbox Code Playgroud)

运算符?:分配从我们要求的变量返回的值。在这种情况下,city.getName()if的值不是null


小智 8

您可以用if, else if, else简短的形式编写语句.例如:

Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";      
Run Code Online (Sandbox Code Playgroud)

这是简短的形式:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}
Run Code Online (Sandbox Code Playgroud)


小智 7

这是一行代码

name = (city.getName() != null) ? city.getName() : "N/A";
Run Code Online (Sandbox Code Playgroud)

这是它的工作原理的示例,运行 js 文件中的以下代码并了解结果。这("Data" != null)是我们在正常情况下所做的条件if(),也是"Data"该条件成立时的声明。这" : "与 else 一样,"N/A"是 else 条件的语句。希望这有助于您理解逻辑。

name = (city.getName() != null) ? city.getName() : "N/A";
Run Code Online (Sandbox Code Playgroud)


shi*_*t66 6

name = (city.getName() != null) ? city.getName() : "N/A";
Run Code Online (Sandbox Code Playgroud)


小智 5

你可以这样让它变得更容易:

name = city.getName() == null ? city.getName() : "N/A"
Run Code Online (Sandbox Code Playgroud)