Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是一个「;“如果声明”;与“a”完全相同;开关语句";在爪哇?_Java - Fatal编程技术网

Java 是一个「;“如果声明”;与“a”完全相同;开关语句";在爪哇?

Java 是一个「;“如果声明”;与“a”完全相同;开关语句";在爪哇?,java,Java,撇开性能不谈,我想知道是否有某些情况下只能使用if语句而不能使用Switch语句,反之亦然 例如,它们是否完全可以互换?如果我愿意的话,我可以将一整段代码从Switch语句交换到If语句,反之亦然,或者这会破坏特定的程序吗 我并不想这么做,只是出于理论和好奇心,因为我对编码还不熟悉,一直在想这个问题 我真的找不到我想要的答案,所以如果这是一个重复的答案,我很抱歉。它们的功能根本不同-如果语句可以检查任何逻辑,您可以通过某种方式将其细化为布尔值,而switch语句比较每种情况下的精确值-有关详细信

撇开性能不谈,我想知道是否有某些情况下只能使用if语句而不能使用Switch语句,反之亦然

例如,它们是否完全可以互换?如果我愿意的话,我可以将一整段代码从Switch语句交换到If语句,反之亦然,或者这会破坏特定的程序吗

我并不想这么做,只是出于理论和好奇心,因为我对编码还不熟悉,一直在想这个问题


我真的找不到我想要的答案,所以如果这是一个重复的答案,我很抱歉。

它们的功能根本不同-
如果
语句可以检查任何逻辑,您可以通过某种方式将其细化为
布尔值,而
switch
语句比较每种情况下的精确值-有关详细信息,请参阅

if-then-else语句可以基于值或条件的范围测试表达式,而switch语句仅基于单个整数、枚举值或字符串对象测试表达式

这意味着,如果您想为每种情况执行比“此值是否等于此数字、枚举或字符串”更复杂的逻辑,则需要
if
语句(或其他管理流的方式),而不是
开关

一个简单的例子是检查一个数字是否超过10但低于9000

if (value > 10 && value < 9000) {
    ...
}
if(值>10&&value<9000){
...
}

将此转换为switch语句将意味着做一些疯狂的事情,比如对每一个可能的值(大于10但小于9000)设置一个case)

Ahh ok,这是有意义的。我还没有进入更复杂的逻辑,所以我一辈子都无法理解If语句为什么会存在。谢谢你快速而彻底的回答@更重要的是,值得注意的是,还有其他不同之处-switch语句已经失效(没有
break
s,流程将进入未来的情况)-这很难用
if
语句进行模拟(这也是
开关
经常被排除在较新语言之外的一个原因——它的语义很难理解,而且容易出错——它的主要优点是易于优化)。