Switch:接受的值的类型仅限于byte、short、Int、char
各case之间没有顺序 default始终是最后执行 结束方式有两个:一个是break,另一个是后面的}
例如:
int x=3;
switch(x){
case 2:
System.out.println("222222");
break;
case 3:
System.out.println("333333");
break;
case 4:
System.out.println("444444");
break;
default :
System.out.println("------");
break;
运行结果333333
但如果改成
int x=3;
switch(x){
case 2:
System.out.println("222222");
//break;
case 3:
System.out.println("333333");
//break;
case 4:
System.out.println("444444");
//break;
default :
System.out.println("------");
//break;
结果就不一样了:
333333
444444
------
If处理可以判断具体数值还能判断区间,可以判断布尔型数值。Switch只能判断具体数值,不适合判断区间,不能判断布尔数值。
所以对具体数值进行判断且数值不多、数据类型为byte、short、int、char的时候,选择switch(可以稍微提高些效率),其余用if选择
备注:switch之所以高效是因为在运行时就直接把各个case加载到内存
Dowhile的特点:不管while条件是否满足,都会执行一次
While:先判断条件,只有条件满足才执行循环体。
Dowhile:先执行循环体,再判断条件,条件满足,再继续执行循环体。
简单一句话:do while无论条件是否满足,循环体至少执行一次
循环只有条件不满足时才会不执行下面的语句,例如:
先执行x=1,然后判断x<3,满足条件,但遇到;,不会执行大括号内的信息,会一直做判断,即一直执行x<3,陷入死循环。
下面这个for循环共执行8步,顺序依次是:
参与运算时,初始化数据只执行一次,也就是int x=1只执行一次。
变量的作用域问题:
两者的区别就是x的作用域是for循环体内部离开for循环后,x在内存中就消失了,而y的作用域更大些。所以如果变量只为控制循环增量存在的话,建议用for循环,可以减少内存的浪费,优化内存。
1. 变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中那么该变量只在for语句内有效。For语句执行完毕,该变量在内存被释放。
2. for和while可以进行互换。如果需要定义循环增量,用for更为合适
什么时候用循环结构?
当要对某些语句执行很多次时,就是用循环语句。
特殊的for循环:
输出结果是:
语句不唯一时,用逗号连接多个语句。
无限循环的最简单表现形式:
For(①;②;③){执行语句}————①②③都省略
While(true){执行语句}————boolean表达式
计数器思想:
通过一个变量记录住数据的状态变化,需要通过循环来完成。
累加思想:
通过变量记录住每次变化的结果,通过循环的形式,进行累加动作
使用标号控制跳出哪层循环,例如:下图是跳出的外层循环。Break,默认跳出子循环
Continue:只能作用于循环结构,继续循环。特点:结束本次循环,继续下一次循环
Break、continue:
Break语句:应用范围:选择结构和循环结构
Continue语句:应用于循环结构
注:a:这两个语句离开应用范围,存在是没有意义的。
B:这两个语句单独存在下面都不可以有语句,因为执行不到。
C:continue语句是结束本次循环继续下次循环。
D:标号的出现可以让这两个语句作用于指定范围。