1.switch由一个控制表达式和多个case标签组成,和if语句不同的是,switch控制语句后面的表达式只能是byte,short,int,char四种数值类型,或者是枚举和String类型(jdk 1.7才开始支持),不能是boolean类型。
执行流程,先对条件表达式进行求值,然后依次匹配各个条件,如果和条件相符,就执行对应case内的语句,如果所有的case都不匹配的话,那么执行default中的语句。
switch中case语句的控制范围比较清晰,所以case要执行的语句完全可以不用{},这点和if语句不同。
2.jdk 1.7 开始支持String类型的表达式匹配
class TestSwitch2{
public static void main(String[] args) {
String season = "SPRING";
switch(season){
case "SPRING":
System.out.println("春天");
//break;
case "SUMMER":
System.out.println("夏天");
break;
case "AUTUMN":
System.out.println("秋天");
break;
case "WINTER":
System.out.println("冬天");
break;
default:
System.out.println("输入有误");
break;
}
}
}
3.总结:
当某些case没有break语句的时候,程序从条件表达式中的值和第一个匹配到的case语句开始执行,一直执行到遇到break或者最后。
case相当于一个switch的执行入口。
break想当于switch的出口,如果一直没有出口的话,一直执行到switch结束。
4.总结
1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经到结尾的话,会继续执行其下的case语句。
2.default:是可选的,而且位置是灵活的。
3.变量可以是哪些类型?char byte short int 枚举 String(jdk1.7)
4.case 条件:其中条件只能是值,不能是取值范围!
class TestSwitch1 {
public static void main(String[] args) {
int i = 2;
switch(i){
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
case 3:
System.out.println("three");
break;
default:
System.out.println("other");
break;
}
5.总结
1.当多个case语句处理的语句块一致时,可以统一来书写
2.一定情况下switch-case与if-else之间可以相互转换。
6.
7.循环结构
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能,需要在某些特定时间把循环的条件改成false来结束循环,否则将是死循环
循环语句的四个组成部分
- 初始化部分(init_statement)对一些变量进行初始化
- 循环条件部分(test_exp) 条件为true执行循环,条件为false不执行循环
- 循环体部分(body_statement) 条件为true时执行的语句
- 迭代部分(alter_statement)需要更改其值的变量
8.循环语句分类
- for 循环
- while 循环
- do/while 循环
9.for循环
10.输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
class ShuiXianHua{
public static void main(String[] args) {
for(int i = 100;i < 1000;i++){//实现100-999的遍历 456 - 400 = 56 - 50
int j1 = i / 100;//百位
int j2 = (i - j1*100)/10;//十位 j2 = i/10%10;
int j3 = i % 10;//个位
if(i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){
System.out.println(i);
}
}
}
}
11.for循环和while循环的差异
如果想要在循环体之外访问循环控制的变量的话,需要使用while循环,因为while循环的变量定义是在while循环体之外的;反之,当不需要在循环之外访问循环控制变量的话,就使用for循环