4.1 顺序结构
顺序结构:程序从上到下逐行的执行,中间没有任何判断和跳转。
public class ProcessTest{
// Java方法中的语句就是顺序结构,从上到下的执行
public static void main(String args[]){
System.out.println("顺序结构:我是第一个被执行的");
System.out.println("顺序结构:我是第二个被执行的");
System.out.println("顺序结构:我是第三个被执行的");
}
}
4.2 分支结构
4.2.1 if 条件语句
if 条件语句使用布尔表达式作为分支条件来进行分支控制
public static void ifTest(){
char age=80;
// 使用if……else语句时,一定要先处理包含范围更小的情况
if(age>60){
// 条件执行体[代码块通常被当成整体执行,要么都执行要么都不执行]
// 代码块中有 return,break,continue,异常 则例外
System.out.println("老年人");
System.out.println("如果楼上执行了,我也会被执行!");
}else if(age>40){// 0或多个else if 语句
System.out.println("中年人");
}else if(age>20){
System.out.println("青年人");
}else{// // 0或多个else语句
System.out.println("少年");
}
}
4.2.2 switch 语句
switch语句运行流程:先求表达式,和case比较,一旦值相等即执行其后代码,直到全部执行完毕或遇见break,所以没有break将全部被执行。
public static void switchTest(){
char score='C';
// 控制表达式,只支持 byte、short、char、int、String、枚举类型,不支持 boolean、StringBuffer、StringBuilder等
switch(score){
// case TRUE:// 枚举类型
// case "优秀":// String
// case 1:// int
case 'A':// char
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中等");
break;
case 'D':
System.out.println("及格");
break;
case 'E':
System.out.println("不及格");
break;
default:
System.out.println("成绩输入错误");
}
}
4.3 循环结构
循环的一般结构:
- 初始化语句:完成初始化工作,在循环开始之前执行
- 循环条件:boolean 表达式,决定是否执行循环体
- 循环体:循环主体,循环条件允许则该代码块被重复执行
- 迭代语句:一次循环体执行结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束
4.3.1 while 循环条件
// 1、循环初始化语句
int count=0;
// 2、循环条件:count<5
while(count<5){// 3、循环体
System.out.println(count);
// 4、迭代语句,迭代语句总位于循环体最后
// 只有当循环体能够被成功执行完成时,才会执行迭代语句
count++;
}
4.3.2 do while 循环语句
while 先判断循环条件,为真则执行循环体
do while 则先执行循环体,再判断循环条件,为真则执行下一次循环
int count=5;
// do while至少执行一次循环体
do{
System.out.println(count);
count--;
}while(count>5);//必须有分号表示循环结束
4.3.3 for 循环
- 大部分情况下可替代 while或do while 循环
- 注意:不要在循环体内修改循环变量[循环计数器],否则程序可能出错。可定义临时变量供访问修改
// 最基本的合法for循环[死循环]
// for(;;);
// System.out.println("楼上傻逼死循环,我也很绝望啊");
// 普通for循环
//1、循环条件总比 循环体/迭代语句 多执行一次
//2、允许同时指定多个初始化语句,这些变量应该具有相同类型[即只能有一个声明语句]
for(int count1=0,max=5;count1<max;count1++){
System.out.println(count1);
}
// foreach循环
// foreach循环自动遍历数组和集合的每个元素,无需获得数组/集合的长度,无需根据索引访问元素
String[] strs={"Java","php","ruby"};
for(String str:strs){
// foreach循环用于遍历元素,不推荐对循环变量赋值,没有实际意义且容易引起错误:
// str只是临时循环变量,不是实际数组的元素,重新赋值不能改变实际数组元素的值,且导致遍历失败。
str="c++";
System.out.println(str);
}
4.3.4 嵌套循环
外层循环将内层循环当成循环体一部分
int i;
System.out.println("九九乘法表");
for(i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"X"+i+"="+i*j+"\t");
if(i==j){
System.out.println();
}
}
}
4.4 控制循环结构
Java 不提供 goto 语句来控制程序跳转–提高程序流程控制的可读性,但降低了程序的灵活性
为弥补不足,提供了 continue 和 break 来控制循环结构,return也能结束整个方法[也就结束了循环]
4.4.1 使用 break 结束循环
- break 用于强制终止一个循环,跳出循环体,执行循环之后的代码
- break 可通过紧跟一个标签[标识外层循环,放在循环语句之前]来直接结束其外层循环
outer:// 这是标签,用于标识外层循环,供break跳出
for(int i=0;i<5;i++){
for(int j=0;j<3;j++){
if(j==1) break;// 跳出当前循环
if(i==3){
break outer;// 直接跳出外层循环
}
System.out.println("i="+i+"\t"+"j="+j);
}
}
System.out.println("这是break跳出循环体后执行的语句");
4.4.2 使用 continue 忽略本次循环剩下语句
- continue 忽略本次循环剩下的语句,接着开始下一次循环,并不会终止循环。
- continue 也可以紧跟一个标签,用于跳过标签所标识循环的当成循环的剩下语句,重新开始下一次循环
outer1:
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(j==1) continue;
if(i==3){
continue outer1;
}
System.out.println("i="+i+"\t"+"j="+j);
}
}
System.out.println("continue控制循环结束后执行的语句");
4.4.3 使用 return 结束方法
- return 并非专门用于结束循环,而是结束方法。
- 当一个方法执行到 return 语句时,该方法被结束,循环也就随之结束
- 其后可跟变量,常量,表达式,分号。示例:return ;