Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
如果我们已经有if-else-if-else语句,为什么我们需要java中的switch-case语句_Java - Fatal编程技术网

如果我们已经有if-else-if-else语句,为什么我们需要java中的switch-case语句

如果我们已经有if-else-if-else语句,为什么我们需要java中的switch-case语句,java,Java,如果我们已经有if-else-if-else语句,为什么我们需要java中的switch-case语句呢 switch case语句有什么性能优势吗?switch语句简化了if-else块的长列表,提高了可读性。此外,它们还允许出现故障案例 考虑以下几点: String str = "cat" switch(str){ case "cat": System.out.println("meow"); break; case "dog":

如果我们已经有if-else-if-else语句,为什么我们需要java中的switch-case语句呢


switch case语句有什么性能优势吗?

switch语句简化了if-else块的长列表,提高了可读性。此外,它们还允许出现故障案例

考虑以下几点:

String str = "cat"
switch(str){

    case "cat":
        System.out.println("meow");
        break;
    case "dog":
        System.out.println("woof");
        break;
    case "horse":
    case "zebra": //fall through
        System.out.println("neigh");
        break;
    case "lion":
    case "tiger":
    case "bear":
        System.out.println("oh my!");
        break;
    case "bee":
        System.out.print("buzz ");
    case "fly":
        System.out.println("buzz"); //fly will say "buzz" and bee will say "buzz buzz"
        break;
    default:
        System.out.println("animal noise");
}
现在让我们试着把它写得像埃尔斯一样

String str = "cat"
if(str.equals("cat")){
   System.out.println("meow");
}
else if(str.equals("dog")){
   System.out.println("woof");
}
else if(str.equals("horse") || str.equals("zebra")){
   System.out.println("neigh");
} else if...

你明白了。特别是开关发光的地方是蜜蜂和苍蝇。那里的逻辑很难简洁地捕捉,特别是如果它们共享的不仅仅是一个打印语句。

但是如果else允许更复杂的条件,那么失败并不是什么优势。@Kayaman但是使用切换后的可读性要好得多,这在很大程度上取决于你在做什么。@Kayaman非常正确。这就是为什么我们有两种结构,当你考虑它的时候,它们是完全不同的。(剧透警报:JVM内部甚至有两种不同的开关盒构造。)两者都有什么错?有四个循环结构有什么错?有许多不同的赋值运算符有什么不对?同时使用lambdas和匿名类有什么问题?没有什么。你知道哪些计算机语言不提供不同的方式来表达一个算法,以便清晰和易于维护?为什么我们可以在已经有加法的情况下进行乘法?