一段简单的代码编译后为什么是这样的?

源代码:

public static void main(String[] args) { 
    int a=1;
    int b=4;
    switch (a){
        case 1:
            while (a<4){

            }
            break;
        case 2:
            while (a<4){

            }
            break;
        default:

    }

}

编译后:

 public static void main(String[] args) {
            int a = 1;
    int b = true;
    switch(a) {
    case 1:
        while(a < 4) {
            ;
        }

        return;
    case 2:
        while(true) {
            if (a < 4) {
                continue;
            }
        }
    }

}

为什么同样的while会编译成不同的代码?目的何在?

你所谓的 编译后 是反编译出来的结果,不同的反编译工具,反编译出来是不一样的,有些还会出错。