Switch分支语句
-
switch分支语句语法:
switch ( 表达式 ) {
case 常量1 :[{]
当表达式的值等于整型常量1时执行的语句;
break;//当一种情况包含其他情况时
[}]
case 常量2 :[{]
当表达式的值等于整型常量2时执行的语句;
break;
[}]
---
default:[{]
当表达式的值不满足任何一个case的值时,执行的语句;
[}]
}
说明:上面中括号代表可有可无。
public class SwitchTest {
public static void main(String[] args) {
int i=1;
switch(i){
case 1 :
System.out.println("代码1");
case 2 :
System.out.println("代码2");
default :
System.out.println("代码3");
}
System.out.println("代码4");
}
}
上面的程序为一个switch分支,运行的结果为代码1,代码2,代码3,代码4;若将i的值改为2,则结果为代码2,代码3,代码4;由此可见,switch分支运行的结果为从满足条件的case开始,后面的代码全部执行。
若不想让其他代码执行,可以用break或return来实现。
break:
-
break用于结束其所在当前switch语句块程序的运行,但不会影响其所在语句块外部代码的执行。
public class BreakTest {
public static void main(String[] args) {
int i=1;
switch(i){
case 1 :
System.out.println("代码1");
break;
case 2 :
System.out.println("代码2");
break;
default :
System.out.println("代码3");
}
System.out.println("代码4");
}
}
上述程序的运行结果为代码1,代码4;
break结束了switch中case 2及之后的程序,但不影响switch结构外程序的运行。
public class BreakTest {
public static void main(String[] args) {
int i = 1;
int k = 1;
switch (i) {
case 1:
System.out.println("代码1");
switch (k) {
case 1:
System.out.println("代码11");
break;
}
//break;
case 2:
System.out.println("代码2");
break;
default:
System.out.println("代码3");
}
System.out.println("代码4");
}
}
上述程序的结果为代码1,代码11,代码2,代码4;若将“//”去掉,则结果为代码1,代码11,代码4。
return:
-
return用于结束其所在方法的运行。
public class SwitchTest {
public static void main(String[] args) {
int i=1;
switch(i){
case 1 :
System.out.println("代码1");
return;
case 2 :
System.out.println("代码2");
return;
default :
System.out.println("代码3");
}
//System.out.println("代码4");//去掉前面注释,该行代码会执行吗?
}
}
执行结果为代码1。
-
若ruturn一定执行,则后面程序会报错;若有不执行的可能,则不会报错(如:前边有一个break)。
public class SwitchTest {
public static void main(String[] args) {
return;
System.out.println("代码4");
}
}
public class SwitchTest {
public static void main(String[] args) {
int i = 1;
switch (i) {
case 1:
System.out.println("代码1");
case 2:
System.out.println("代码2");
default:
return;
}
System.out.println("代码4");
}
}
上述代码return一定执行,则程序不能执行。
public class SwitchTest {
public static void main(String[] args) {
int i = 1;
switch (i) {
case 1:
System.out.println("代码1");
break;
case 2:
System.out.println("代码2");
default:
return;
}
System.out.println("代码4");
}
}
上述代码可执行,因return之上有一个break使return有不执行的可能。
-
return只结束其所在方法的运行。
public class ReturnTest {
static void show(){
System.out.println("代码1");
return;
}
public static void main(String[] args) {
show();
System.out.println("代码2");
}
}
运行结果为代码1,代码2,return之结束了show方法,对main方法无影响。
-
return不能用于代码块中。
public class ReturnTest {
static{
System.out.println("show方法");
return;
}
public static void main(String[] args) {
System.out.println("main方法");
}
}
由于return用在了代码块中,会报错,无法执行。