分支结构2:switch语句
switch由一个控制表达式和多个case标签组成,和if语句不同的是,switch控制语句后面的表达式只能是byte,short,int,char四种数值类型,或者是枚举和String类型(jdk 1.7才开始支持),不能是boolean类型。
执行流程,先对条件表达式进行求值,然后依次匹配各个条件,如果和条件相符,就执行对应case内的语句,如果所有的case都不匹配的话,那么执行default中的语句。
switch中case语句的控制范围比较清晰,所以case要执行的语句完全可以不用{},这点和if语句不同。
总结:
当某些case没有break语句的时候,程序从条件表达式中的值和第一个匹配到的case语句开始执行,一直执行到遇到break或者最后。
case相当于一个switch的执行入口。
break想当于switch的出口,如果一直没有出口的话,一直执行到switch结束。
/*
switch(变量){
case 值1:
case 值2:
case 值3:
default:
}
1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经到结尾的话,会继续执行其下的case语句。
2.default:是可选的,而且位置是灵活的。
3.变量可以是哪些类型?char byte short int 枚举 String(jdk1.7)
4.case 条件:其中条件只能是值,不能是取值范围!
*/
循环结构
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能,需要在某些特定时间把循环的条件改成false来结束循环,否则将是死循环
循环语句的四个组成部分
- 初始化部分(init_statement)对一些变量进行初始化
- 循环条件部分(test_exp)条件为true执行循环,条件为false不执行循环
- 循环体部分(body_statement)条件为true时执行的语句
- 迭代部分(alter_statement)需要更改其值的变量
循环语句分类
- for 循环
- while 循环
- do/while 循环
for 循环
典型语法:
for(int i = 0;i< 10 ;i++){
System.out.println(i);
}
While循环
语法格式
[初始化语句]
while( 布尔值测试表达式){
语句或语句块; //循环执行语句
[更改语句;] //控制while何时结束
}
for循环和while循环的差异
看下面语句:
for(int i = 0;i < 10;i ++){
System.out.println(i);
}
//System.out.println(i);
int p = 0;
while(p < 10){
System.out.println(p);
p++;
}
System.out.println(p);
如果想要在循环体之外访问循环控制的变量的话,需要使用while循环,因为while循环的变量定义是在while循环体之外的;反之,当不需要在循环之外访问循环控制变量的话,就使用for循环
do-while 循环语句
语法格式
[初始化语句]
do{
语句或语句块;
[更改语句;]
}while(布尔值测试表达式);
注意在while表达式之后要加分号
do{
System.out.println("Hello World");
}while(false);
/*
①初始化条件
②循环条件
③迭代条件
④循环体
1.格式:
①
do{
④
③
}while(②);
2.do-while与while的区别:do-while循环至少会执行一次!
*/
嵌套循环
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
int i = 0,j = 0;
while(true){
while(true){
if(j > 3)
break;
System.out.println("inner loop");
j++;
}
if(i > 4)
break;
System.out.println("outter loop");
i++;
}
嵌套循环:循环中还可以声明循环。相当于内层循环的整体充当外层循环的循环体
for(;;)