请解释以下代码示例的输出“0”。在 Java 中的 switch case 语句中使用字符串是否合法?
public class Test {
static int x;
public static void main(String[] args) {
String ss = "aBc";
String s = "ABC";
switch (s) {
case "":
x++;
case "AbC":
x++;
break;
case "ABC":
x--;
default:
x++;
}
System.out.print(x);
}
}
如果您没有添加break,它将同时调用case(这是正确的)和default。
case "ABC" : x--;
default : x++;
所以就经历了以上的案例
您的
switch
中遇到了两个案例。
switch(s){
case "" : x++;
case "AbC" : x++; break;
case "ABC" : x--;
default : x++;
}
您因为
"ABC"
而遇到了 s = "ABC"
情况,但您没有 break
,这会导致您完全离开 switch
语句。因此,您也会遇到 default
情况。
因此,在
x
情况之后,"ABC"
设置为 -1,但随后由于 default
情况立即设置为 0。
现在,我不会说你的
break
声明缺失了,因为这很可能是故意的。但这是包含它们的一个很好的理由,因为如果不这样做,您可能会出现异常行为。
变量
x
默认初始化为0
:
static int x;
与
相同static int x = 0;
然后
s = "ABC"
,因此你到达case "ABC"
,从而形成x = -1
。然而,在本例条目中没有 break
,因此您继续执行 default
的 x++
,即 -1 + 1
即 0
。
您没有在 case“ABC”之后放置中断,因此默认值也可能被执行。默认 x = 0,并且执行了 switch 语句的这些行:
case "ABC" : x--;
default : x++;
因此,x=0,则第一行之后 x=-1,第二行之后 x = 0。
是的,在java中使用字符串是合法的,不像C只接受整数。
您有
s = "ABC"
,它执行第三种默认情况,因为您没有在第三种情况中指定 break
来界定您的切换行为。因此,在 x-- 之后 x 的 3rd case
值中,x = -1,默认情况下它会增加回 0。因此 x 的值相对于其初始值没有改变。
您缺少
break
声明:
// x is initialized to zero
// s = "ABC"
switch(s) {
case "": // Skipped
x++;
case "AbC": // Skipped
x++;
break;
case "ABC": // This is executed
x--; // x is now equal to 1, but there's no break statement
default: // Since there's no break statement, this block is also executed
x++; // x is now equal to 1--: 0
}
is it legal to use string in switch case statement in Java ?
Java 7 引入了带有 sting 的 switch 语句。并且在 switch 语句中使用字符串几乎是合法的。
Switch case 语法 - 你的 switch 语句中缺少
break
switch(expression){
case value :
//Statements
break; //optional
case value :
//Statements
break; //optional
//You can have any number of case statements.
default : //Optional
//Statements
}
我修改了第1行添加了
break
关键字,在你的代码中,当第3行首先执行时,它将把x值0更改为-1,然后第4行将执行它将x值-1更改为0,所以你的结果是“0 ”
public class Test {
static int x;
public static void main(String[] args) {
String ss = "aBc";
String s = "ABC";
switch(s){
case "" : x++; break; // Line 1
case "AbC" : x++;break; // Line 2
case "ABC" : x--; // Line 3
default : x++; // Line 4
}
System.out.print(x);
}
}