条件语句与循环语句

1. switch

1. 语法

switch(表达式) {  
   	case 值1: 
    	语句;	//可选
    	break;  //可选
    case 值2: 
    	语句;	//可选
    	break;  //可选
    ... ...
    default:
    	语句;	//可选
    	break;  //可选
} 

2. 执行流程

  1. 首先计算出表达式的值;
  2. 表达式值依次与case值比较,如果有对应的值,就执行相应的语句体,直到break结束;
  3. 如果所有的case值都与表达式值不匹配,就执行default语句体;
  4. switch语句结束。

3. 注意事项

  1. switch中参数的取值类型只能为byte、short、int、char、枚举(jdk1.5之后版本支持)、String(jdk1.7版本之后支持);
  2. case后的值只能是常量,不能是变量,且不能相同;
  3. 如果case语句部分没以break结束,就会出现case穿透1
  4. default语句可以写在switch语句体中的任意位置,如果写在末尾,则可以省略break,如果不写在末尾,则default语句中必须有break,否则会出现case穿透。

测试代码如下:

int a = 2;
int b = 3;
/**
 * a=2,switch中没有匹配值,执行default语句体
 * 执行结束,b=4,break;
 * switch语句结束,最终b=4
 */
switch(a){
	default:
		b++;
		break;
	case 3:
		b++;
	case 4:
		b++;
}
System.out.println("b=" + b);    //b=4
/**
 * 此时a=2,b=4
 * a=2,switch中没有匹配值,执行default语句体
 * 执行结束,b=5,没有break,case穿透,继续往下执行
 * case 3执行结束,b=6,没有break,case穿透,继续往下执行
 * case 4执行结束,b=7
 * switch语句结束,最终b=7
 */
switch(a){
	default:
		b++;
	case 3:
		b++;
	case 4:
		b++;
}
System.out.println("b=" + b);    //b=7 

2. 循环语句

1. 语法

1.for循环

for(初始化语句;判断条件语句;控制条件语句){
		循环体语句;
}

测试代码如下:

/**
 * for循环求1-100间偶数和
 */
int sum = 0;
for (int i = 0; i < 100; i += 2) {
    sum += i;
}
//1-100间偶数和为(for循环):2450
System.out.println("1-100间偶数和为(for循环):" + sum);

2. while循环

while(判断条件语句){
		循环体语句;
		控制条件语句;
}

测试代码如下:

/**
 * while循环求1-100间偶数和
 */
int sum = 0;
int i = 0;
while (i < 100) {
    sum += i;
    i += 2;
}
//1-100间偶数和为(while循环):2450
System.out.println("1-100间偶数和为(while循环):" + sum);

3. do…while循环

do{
		循环体语句;
		控制条件语句;
}while(判断条件语句);

测试代码如下:

/**
 * do...while循环求1-100间偶数和
 */
int sum = 0;
int i = 0;
do {
    sum += i;
    i += 2;
} while (i < 100);
//1-100间偶数和为(do...while循环):2450
System.out.println("1-100间偶数和为(do...while循环):" + sum);

4. 循环结束语句

1. continue

结束本次循环

测试代码如下:

/**
 * 当i=3时,执行到continue,本次循环结束,不再执行下面的输出语句,直接进入下一次循环
 * 输出:
 * 		0 1 2 4 
 */
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    System.out.print(i + " ");
}

2. break

结束本层循环

测试代码如下:

/**
 * 当i=3时,执行到break,本层循环结束,不再执行下面的语句以及后续的循环,直接结束循环
 * 输出:
 * 		0 1 2 
 */
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
    System.out.print(i + " ");
}

3. 带标签的结束语句

结束嵌套的多层循环(continue与break都适用

测试代码如下:

/**
 * 可通过给for循环加上标签直接结束嵌套的外层循环
 * 输出:
 * 		0 1 2 
 * 		0 1 2 
 * 		0 1 2 
 */
wc:for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 3) {
            break wc;
        }
        System.out.print(j + " ");
    }
    System.out.println();
}

  1. switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果没有break语句,那么就会从表达式的值相匹配的case标签处开始执行,一直执行到switch语句的末尾,这种从其中的一个case处开始,忽略后面的值的匹配,直接运行case的内容的现象就是穿透的现象。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值