java开关语句机制

java开关语句机制,java,switch-statement,Java,Switch Statement,在下面的代码中,当我注释中断时,当我编写一个case(比如说“start”)时,它将打印下面所有的case输出,这意味着所有三行都已打印,当我编写“stop”时,它将打印两个输出“Mechine stopped”和“No command gived”,为什么在编译器搜索case时我需要给出break语句,如果匹配,则打印相关输出 import java.util.Scanner; public class App{ public static void main(Stri

在下面的代码中,当我注释中断时,当我编写一个case(比如说“start”)时,它将打印下面所有的case输出,这意味着所有三行都已打印,当我编写“stop”时,它将打印两个输出“Mechine stopped”和“No command gived”,为什么在编译器搜索case时我需要给出break语句,如果匹配,则打印相关输出

    import java.util.Scanner;
    public class App{
    public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    String text = input.nextLine();
    switch(text){
        case "start":
        System.out.println("Mechine Started");
        break;
        case "stop":
        System.out.println("Mechine stopped");
        break;
        default:
        System.out.println("No command given");


            }
        }
    }
为什么在编译器搜索 案例,如果匹配,则打印相关输出

    import java.util.Scanner;
    public class App{
    public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    String text = input.nextLine();
    switch(text){
        case "start":
        System.out.println("Mechine Started");
        break;
        case "stop":
        System.out.println("Mechine stopped");
        break;
        default:
        System.out.println("No command given");


            }
        }
    }
因为这就是它的定义。除非您明确地
break

请参阅和注意:

如果其中一个case常量等于表达式的值, 然后我们说案例匹配,所有语句在 开关块中的匹配案例标签(如果有)在中执行 顺序

注意,这类似于C中的开关行为。发件人:

源于C语言的语言,更广泛地说是受C语言影响的语言 Fortran的计算GOTO,而不是特性fallthrough,其中 移动到匹配的大小写,然后继续执行 至“)中与下一个案例相关的陈述 源文本

另一个有趣的问题是break语句。每个break语句终止封闭的switch语句。控制流继续执行开关块后面的第一条语句break语句是必需的,因为如果没有它们,开关块中的语句就会失效:匹配大小写标签后的所有语句都会按顺序执行,而不管后续大小写标签的表达式如何,直到遇到break语句为止


在switch语句中未使用break时为直通逻辑

switch语句没有说“您需要包括break”。


最佳实践是,当您使用此逻辑时,应该添加注释//fall-through

旁注,一般来说,您希望在每种情况下进一步缩进代码,就像它们被大括号包围一样