程序控制结构可以根据程序的需要在一定程度上控制代码的执行流程,主要控制结构有条件语句、循环语句、跳转语句、异常处理语句。
条件语句
if与else的组合
-
if-else:如
if(条件){
代码块1;
}else{代码块2;}
根据条件的布尔值决定执行代码块,如果放在if后面括号里的条件是真,则执行代码块1,否则执行代码块2
-
if-else if-else:原理相同,只要你想写这个else-if可以写到天荒地老,如
if(条件){
代码块1;
}else if(条件2){
代码块2;
}else {代码块3;}
条件1成立执行代码块1,不成立判断条件2,条件2成立执行代码块2,否则执行代码块3,注意,如果条件1和条件2都成立,由于顺序执行的原因,程序只会执行代码块1,因为else if是前者不成立的情况下才会去判断自身的条件。
代码示例
boolean condition1=true;
boolean condition2=false;
if(condition1){
System.out.println("根据condition1执行代码块1");
}else{
System.out.println("根据condition1执行代码块2");
}
if(condition2){
System.out.println("根据condition2执行代码块3");
}else{
System.out.println("根据condition2执行代码块4");
}
运行结果
-
switch:
如switch(数据){
case 数据第一种情况:{代码块1;} break;
case 数据第二种情况:{代码块2;}break;
default :{代码块3} break;
}
根据不同的情况执行不同的代码块,这里的switch()括号里的数据不仅支持整型,还支持字符等数据类型,注意这里的break;是为了防击穿,如果没有break,它会将执行符合情况后的所有代码,包括你后面情况本来不成立的代码。这里的default是前面所有的case 情况都不成立时才会执行的代码块的标志,也可以不加
代码示例
String today="星期二";
switch(today){
case "星期一":
System.out.println("星期一");
break;
case "星期二":
System.out.println("星期二");
break;
case "星期三":
System.out.println("星期三");
break;
case "星期四":
System.out.println("星期四");
break;
case "星期五":
System.out.println("星期五");
break;
case "星期六":
System.out.println("星期六");
break;
case "星期日":
System.out.println("星期日");
break;
default :
System.out.println("前面的情况全不是");
}
运行结果
运行结果是星期二,就不截图了
循环语句
for循环
- for循环:在满足给定条件的情况下,重复执行一段代码一定的次数。
编译器里常常有fori和foreach两种快捷操作
fori:自动生成一段for循环的代码,由用户自主输入循环次数
foreach:又叫增强for循环,它很适用于较为复杂的数据结构,能够做到对对象的遍历
代码示例
//正常for循环
for (int i = 0; i < 5; i++) {
System.out.println("fori循环输出"+i+"次");
}
//增强for循环
int[] nums={9,8,7,6};
for (int i:nums) {
System.out.println("foreach遍历数组"+i);
}
运行结果
while循环
在满足给定条件的情况下重复执行一段代码,直到条件不再成立
while循环主要有while和do-while两种,唯一的区别就是do=while型,无论怎样都会执行一次
代码示例
int i=2;
while(i>0){
System.out.println("while循环输出"+i);
i--;
}
i=-1;//假如直接用while循环是一次也无法输出的
do{
System.out.println("do-while循环输出"+i);
i--;
}while(i>0);
}
}
运行结果
跳转关键词
- break语句:用于终止循环或switch语句的执行,并跳转到循环或switch语句之后的代码。
- continue语句:用于跳过当前循环中的剩余代码,并开始下一次循环迭代。
- return语句:用于终止方法的执行,并返回一个值(如果定义了方法的返回类型,这个是后面学到自定义方法时用的最多的)。
这些跳转结构可以在特定情况下改变程序的执行流程,例如提前跳出循环、跳过当前循环迭代或终止整个方法的执行。
异常处理语句
这个也是到了稍微后一点的时候才会用到的,内容可以单独出一小节,所以这里不做具体介绍异常处理结构允许程序在遇到异常情况时进行相应的处理,防止程序异常终止,并提供一种机制来捕获和处理异常情况。在IO流和网络编程时会经常用到。
- try-catch-finally语句:try是程序员觉得可能会出异常的语句,catch是捕获这个异常,finally是加可不加的,是无论是否捕获异常最后都要执行的代码。
- throw语句:用于抛出异常对象,由catch(即捕获异常代码段)进行操作
- throws语句:用于在方法声明中指定方法可能抛出的异常类型,告知调用者需处理这些异常,你可以一直抛异常到main函数,也就是Java默认处理异常的方法。
代码示例
int a=10;
int b=0;
try {
//需要捕获异常的代码块
int c=a/b;
//0不能做除数,所以必出异常
}catch (Exception e){
//捕获到异常后执行的代码块
System.out.println("程序捕获到了异常");
throw new RuntimeException(e.getMessage());//输出具体异常
}finally {
System.out.println("执行finally里面的代码块");
}
运行结果
/ by zero的意思就是出现了除数为0的异常