gpt4 book ai didi

java - 多个 else if 条件,当逻辑规定最后一个 "else if"时,以另一个 "else"或 "else"结束 - 部分仅规定一种可能性?

转载 作者:行者123 更新时间:2023-12-02 09:13:11 26 4
gpt4 key购买 nike

有时您会因为 if 中的条件背后的逻辑而知道, else if您的最后一个条件检查可以省略并写为 else反而。这样你就可以少做一次检查,但阅读起来不太清楚。什么是好的编码?是否会因为少了一项检查而变得更高效,或者编译器是否针对这些情况进行了优化?

if(x<0){
//statements
}else if(x==0){
//statements
}else if(x>0){
//statements
}

或与其他

if(x<0){
//statements
}else if(x==0){
//statements
}else{
//statements
}

最佳答案

在 Java 中,如果在最后一个 else if 上包含条件,则会出现潜在问题:

String whatIsX;
if (x < 0) {
// statements
whatIsX = "x is negative";
} else if (x == 0) {
// statements
whatIsX = "x is zero";
} else if (x > 0) {
// statements
whatIsX = "x is positive";
}
System.out.println(whatIsX);

这会给你一个错误。原因是编译器认为,如果没有一个 if 条件为 true,则 whatIsX 可能尚未初始化。 我们知道这是不可能的,因为 if 条件之一必须为真(假设 x 不能被另一个线程在错误的位置更改)时间!)。但语言规则并不要求编译器尝试进行所需的分析来弄清楚这一点。

因此,最好不要包含最后一个条件。将最后一个 else if (x > 0) 更改为简单的 else 将使程序合法。

这是 Java 的一个特性,因为它有“明确赋值”规则。该代码在大多数其他语言中都可以正常工作。

关于java - 多个 else if 条件,当逻辑规定最后一个 "else if"时,以另一个 "else"或 "else"结束 - 部分仅规定一种可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com