Day13 -- Java流程控制02
1. 顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
- 是任何一个算法都离不开的一种基本算法结构。
2. 选择结构
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
- switch多选择结构
1) if单选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
2) if双选择结构
两个判断-->双选择结构 if-else结构
语法:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
3) if多选择结构
语法:
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
Note:
- if语句至多有1个else语句,else语句在所有的else if语句之后;
- if语句可以有若干个else if语句,它们必须在else语句之前。
- 一旦其中一个else if语句检测为true,其它的else if以及else语句都将跳
4) 嵌套的if结构
可以在另一个if或者else if语句中使用if或者else if语句。
语法:
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}
}
switch多选择结构
- switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
- swtich语句中的变量类型可以是:
- byte、short、int或者char
- 从Java SE 7开始,switch支持字符串String类型了 字符的本质也是数字(可以通过反编译文件查看)
- 同时case标签必须为字符串常量或字面量
语法:
switch(expression){ //switch匹配一个具体的值
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//可以有任意数量的case语句
default: //可选
//语句
}
case穿透
若分支没有break,则满足的分支代码执行后,后续的代码会继续执行,直至switch的block结束
规范:每写一个case分支,都要加上break;
补充知识:
在IDEA中反编译class文件
class文件是机器能识别的指令文件,要把它反编译成自然语言,可通过IDEA进行
步骤:
- 打开IDEA项目结构,找到项目输出文件的路径
-
在Explorer中打开以上路径,找到对应的.class文件
-
鼠标右键对应类,选择show in explorer,打开该类所在目录,一般是src目录下,.java文件存放目录
-
将上述class文件在文件夹层面上拷贝到java文件存放的目录下,IDEA中即会展示出.class文件,可如同Java文件一样打开查看反编译后的文件
3. 循环结构
- while循环
- do...while循环
- for循环
- 在java5中引入了一种主要用于数组的增强型for循环
while循环
while是最基本的循环,它的结构为:
while(布尔表达式){
//循环内容
}
- 大多数情况下是会让循环停止下来的,需要一个让表达式失效的方式来结束循环
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
do...while循环
-
while不满足条件则不执行;do while至少执行一次。
-
结构:
do{ //代码语句 }while(布尔表达式);
例子:
int a = 0;
while(a<0){
System.out.println(a);
a++;
}
System.out.println("===================");
do{
System.out.println(a);
a++;
}while(a<0); //会输出一个0
for循环
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for循环执行的次数实在执行前就确定的,语法格式如下:
for(初始化;布尔表达式;更新){ //代码语句 }
IDEA中快捷键({n}.for会自动弹出循环n次对应的for循环条件)
练习:九九乘法表
/*
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
*/
//自己的解法
/*
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d * %d = " + j*i +"\t", j, i);
}
System.out.print('\n');
}
*/
//课程解法
//1.先打印第一列
//2.把固定的1再用一个循环包起来
//3.去掉重复项,i<=j
//4.调整样式
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i+"*"+j+"="+(j*i) + "\t");
}
System.out.println();
}
增强for循环
-
Java5引入了一种主要用于数组或集合的增强型for循环。
-
Java增强for循环语法格式如下:
for(声明语句:表达式){ //代码语句 }
-
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数字元素的值相等。
-
表达式:表达式是要访问的数组名,或者是返回值为数组的方法