当我们有多个选项(或条件)时,使用Switch case语句,这个时候我们可能需要为每个选项安排不同的任务。
Switch case语句的语法如下所示
switch (variable or an integer expression)
{
case constant:
//Java code
;
case constant:
//Java code
;
default:
//Java code
;
}
Switch Case语句常用来和break一起用,break是可选的。
我们先用一个没有break语句的例子,然后我们再讨论switch case和break。
一个简单的switch case语句
public class SwitchCaseExample1 {
public static void main(String args[]){
int num=2;
switch(num+2)
{
case 1:
System.out.println("Case1: Value is: "+num);
case 2:
System.out.println("Case2: Value is: "+num);
case 3:
System.out.println("Case3: Value is: "+num);
default:
System.out.println("Default: Value is: "+num);
}
}
}
输出:
Default: Value is: 2
程序说明:
在上面程序中我给switch传了一个表达式,当然也可以传递变量。
我传了num + 2,其中num值是2,并且在添加之后表达式得到4.
因为没有用值4定义的情况,所以执行了默认情况。
这就是为什么我们应该在switch case中使用default,这样如果没有匹配条件的case,则执行default的内容。
Switch流程图
首先,检查在switch括号中提供的变量,值或表达式,然后基于结果,执行与结果匹配的相应的case块。
Switch Case中的Break语句
在switch case中,break语句是可选的,但几乎每次处理switch case时都会使用它。
在我们讨论break语句之前,让我们看看下面的例子,我没有使用break语句:
public class SwitchCaseExample2 {
public static void main(String args[]){
int i=2;
switch(i)
{
case 1:
System.out.println("Case1 ");
case 2:
System.out.println("Case2 ");
case 3:
System.out.println("Case3 ");
case 4:
System.out.println("Case4 ");
default:
System.out.println("Default ");
}
}
}
输出:
Case2
Case3
Case4
Default
在上面的程序中,我们已经将整数值2传递给了switch,所以控制切换到了case 2。
但是在case 2之后我们没有使用break语句,导致流程传递到后续case直到结束。
这个问题的解决方案是使用break语句。
当您希望程序流从switch主体中出来时,可以使用break语句。
每当在switch主体中遇到break语句时,执行流程将直接从switch中出来,忽略其余的情况
让我们采用相同的例子,但这次使用break语句:
break程序示例:
public class SwitchCaseExample2 {
public static void main(String args[]){
int i=2;
switch(i)
{
case 1:
System.out.println("Case1 ");
break;
case 2:
System.out.println("Case2 ");
break;
case 3:
System.out.println("Case3 ");
break;
case 4:
System.out.println("Case4 ");
break;
default:
System.out.println("Default ");
}
}
}
输出:
Case2
现在您可以看到只有case2被执行,其余case被忽略。
为什么我default后不使用break语句?
default后控制流程本身就会从switch中出来,所以我没有使用它。
但是如果你仍然希望在default情况下使用break,那么你可以使用它,这样做也没有任何害处。
有关Switch Case的几个问题
1)case并不总是需要规定为1,2,3等。它可以在case关键字后面包含任何整数值。
此外,case不需要始终按升序排列,您可以根据要求以任何顺序指定它们。2) 也可以在case中用字符,程序示例:
public class SwitchCaseExample2 {
public static void main(String args[]){
char ch='b';
switch(ch)
{
case 'd':
System.out.println("Case1 ");
break;
case 'b':
System.out.println("Case2 ");
break;
case 'x':
System.out.println("Case3 ");
break;
case 'y':
System.out.println("Case4 ");
break;
default:
System.out.println("Default ");
}
}
}
- 3)switch内部给出的表达式应该是一个常量值,否则它将无效。
例如:
switch有效的写法:
switch(1+2+23)
switch(1*2+3%4)
switch无效的写法:
switch(ab+cd)
switch(a+b+c)
- 4)允许嵌套switch语句,这意味着你可以在另一个switch内部使用switch语句。
但是应该避免使用嵌套的switch语句,因为它会使程序更复杂,更不易读。