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 が出力されます。最初は、break ステートメントがなくても、コードの各部分が case ステートメントに保持されていると考えたため、2 を出力する必要があると考えていました。今、問題はそれをどのようにコンパイルするかにあると思います。たとえば、私の現在の信念は、ケース ステートメントが値と等しいかどうかをブール値が内部的に追跡しているということです。そうであれば、ブール値は true であり、すべての case ステートメントは、ブレークが見つかるまでtrue として扱われます。これは理にかなっていますが、この背後に他の理由があるのか 、それとも私の仮定が完全に間違っているのか、まだ疑問に思っています.