java - if 与 if/else 语句?
问题描述
我在一个类中有这样的代码:
if (reload == 0) {
String mailSuccess = "send success mail";
} else {
String mailOther = "send other mail";
}
if (fileError1Exists == true) {
String mailError1 = "send mail for error 1";
}
if (fileError2Exists == true ) {
String mailError2 = "send mail for error 2";
}
if (fileError3Exists == true ) {
String mailError3 = "send mail for error 3";
}
也许是因为我对 Java 还很陌生,所以我想知道这种语法是否干净?每次,我看到一个“if/ese”表达式,更像是这样:
if (condition == 0) {
String mailSuccess = "send success mail";
} else if (fileError1Exists == true) {
String mailError1 = "send mail for error 1";
} else if (fileError2Exists == true) {
String mailError2 = "send mail for error 1";
} else if (fileError3Exists == true) {
String mailError3 = "send mail for error 1";
} else {
String mailOther = "send other mail";
}
像这样一个接一个地保持这些 if 语句是干净的吗?显然,第一个代码示例有效,因为它已经在生产中。但是第一个示例和第二个示例代码做同样的事情吗?通常,它确实如此,对吗?还是因为我缺乏经验而错过了什么?
提前感谢您的反馈。我在以前的帖子中找不到我的遮阳篷。
编辑谢谢大家的回答。它帮助我理解了代码,而且,它帮助我学习了一些新东西!
解决方案
if
并且 if-then-else
是条件语句,但具有不同的行为。
使用多个分隔if
,JVM 可以执行0
条件语句中的每个包含的语句,而if
在 JVM 中使用的集合if-then-else
将始终执行0
或1
包含的语句。
根据经验,您将使用一组分离if
的,因为包含的条件语句中的处理是累积的,您将使用if-then-else
,因为包含的条件语句中的处理是独占的。
该行为在 JLS 中指定。
...
否则,通过根据结果值进行选择来继续执行:
如果值为 true,则执行包含的 Statement;...
如果该值为 false,则不采取进一步行动,并且 if-then 语句正常完成。
和 :
通过首先评估表达式来执行 if-then-else 语句。如果结果是布尔类型,则需要进行拆箱转换(第 5.1.8 节)。
...
否则,通过根据结果值进行选择来继续执行:
如果值为真,则执行第一个包含的语句(else 关键字之前的语句);if-then-else 语句正常完成当且仅当该语句的执行正常完成。
如果值为 false,则执行第二个包含的语句(else 关键字之后的语句);...
推荐阅读
- javascript - 单击时反转按钮操作
- sql - TSQL - 删除数据库中超过 x 天的所有记录
- python-3.x - 使用dictconfig在python3日志记录设置中记录异常时如何格式化错误消息和堆栈?
- firebase - 如何将对话流中的fulfillmentText保存到firebase?
- php - php foreach 打印 2 次
- python-3.x - 最后一行的错误语法错误是什么
- javascript - 在 setTimeout 之前和之后使用异步函数调用开玩笑
- azure - 通过不处理 cosmos DB gremlin API 上的预计值进行分组
- c - 两个线程可以访问全局变量吗?
- python - 仍然找到安装了 pyenv 的系统 python - 安装模块