pojawia się break i switch, aby wykonać wszystkie instrukcje case

W najnowszej stabilnej wersji Java i Eclipse (Kempler) wprowadzając następujący kod i wykonując go, zakładając, że istnieją nazwy pakietów i klas:

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);
    }
}

Spowoduje to wydrukowanie wartości 4. Początkowo myślałem, że powinien wydrukować 2, ponieważ myślałem, że nawet jeśli nie ma żadnych instrukcji break, każdy fragment kodu jest nadal przechowywany w instrukcji case. Teraz myślę, że problem leży w sposobie kompilacji. Na przykład, moje obecne przekonanie jest takie, że wewnętrzna wartość logiczna śledzi, czy instrukcja case była równa wartości. Jeśli tak, to wartość logiczna jest prawdziwa iwszystkie opisy przypadków będą traktowane jako prawdziwe dopóki nie zostanie znaleziona przerwa. To ma sens, ale wciąż zastanawiam się, czy są inne przyczyny tego stanu rzeczy, czy też całkowicie się mylę.

questionAnswers(4)

yourAnswerToTheQuestion