我知道有一种方法可以用简短的形式编写 Java if
语句。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有谁知道如何将上述 5 行的简短形式写成一行?
if
逻辑错误。
if (city.getName()!=null){name = city.getName();}else{name="N/A"}
if (city.getName()!= null) name = city.getName(); else name="N/A";
使用三元运算符:
name = ((city.getName() == null) ? "N/A" : city.getName());
我认为你有条件倒退 - 如果它为空,你希望该值为“N/A”。
如果城市为空怎么办?在这种情况下,您的代码 * 会遇到问题。我会添加另一张支票:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
为了避免调用 .getName()
两次,我会使用
name = city.getName();
if (name == null) name = "N/A";
city.setName(null)
。你的回答巧妙地处理了这个问题。
方法是使用三元运算符:
name = city.getName() == null ? city.getName() : "N/A"
但是,我相信您在上面的代码中有错字,您的意思是:
if (city.getName() != null) ...
这 ? : 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 > b。条件可以是任何返回布尔值的表达式。
我总是忘记如何使用 ?:
ternary operator。这个补充答案是一个快速提醒。它是 if-then-else
的简写。
myVariable = (testCondition) ? someValue : anotherValue;
在哪里
() 持有如果
?那么意味着
其他意思
它与
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
在 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 hasName = city.getName() != null;
额外:出于好奇
在某些基于 JAVA
的语言(例如 Groovy
)中,您可以使用以下语法:
name = city.getName() ?: "N/A";
运算符 ?:
分配从我们要求的变量返回的值。在这种情况下,如果不是 null
,则为 city.getName()
的值。
您可以用简短的形式编写 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";
}
name = (city.getName() != null) ? city.getName() : "N/A";
这是一行代码
name = (city.getName() != null) ? city.getName() : "N/A";
这是它如何工作的示例,在 js 文件中运行下面的代码并理解结果。这个 ("Data" != null)
是我们在正常 if()
中所做的条件,而 "Data"
是这个条件成立时的语句。此 " : "
充当 else 并且 "N/A"
是 else 条件的语句。希望这可以帮助您理解逻辑。
名称=(“数据”!= null)? “数据”:“不适用”;控制台.log(名称);
使用 org.apache.commons.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
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) 当条件为真时,冒号左边的值被赋值,否则冒号右边的值被赋值给变量。
这是一个参考: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";
您可以通过这种方式使其变得更容易:
name = city.getName() == null ? city.getName() : "N/A"
在 Java 8+ 中,您有 2 个解决方案。使用简短的 if 语句:
Objects.nonNull(city.getName())? city.getName(): "N/A";
在您的情况下,更好的解决方案是使用 Optional:
Optional.ofNullable(city)
.map(City::getName)
.orElse("N/A");
name = city.getName()!=null?city.getName():"N/A"
name = city.getName() == null ? "N/A" : city.getName();
name = city.getName()==null ? "N/A" : city.getName()
city == null
,String cityName = city.getName();
不会抛出NullPointerException
?因此,我会说您的中间解决方案绝对是最好的(PS,我赞成“不必要的”括号!人们需要记住,99% 的编码是与其他人(以及您未来的自己)交流,而不是与编译器交流 - 否则我们会使用 c!)