появляется break и switch для выполнения всех операторов case

В последнем стабильном выпуске Java и Eclipse (Kempler) введите следующий код и выполните его, предполагая, что существуют имена пакетов и классов:

package some_package;

public class what_the_heck {

    public static void main(String[] args) {
        int p = 2;
        int x = 1;
        switch(p){  
            case (1):
                x--;
            case (2):
                x = 2;
            case (3):
                x = 3;
            default:
                x++;
        }
        System.out.println(x);
    }
}

Это печатает значение 4. Первоначально я думал, что это должно напечатать 2, потому что я думал, что даже если не было никаких операторов break, каждый кусок кода все еще содержится в операторе case. Теперь я думаю, что проблема заключается в том, как это компилируется. Например, мое текущее убеждение состоит в том, что внутренне логическое значение отслеживает, было ли выражение case равно значению. Если это так, то логическое значение истинно ивсе утверждения случая будут считаться истинными пока перерыв не найден. Это имеет смысл, но мне все еще интересно, есть ли другие причины этого или я совершенно не прав в своем предположении.

Ответы на вопрос(4)

Ваш ответ на вопрос