流程控制对于任何语言都是一门非常重要的学习阶段,它提供啦程序整体运作流程的基础手段。也可以说流程控制是让电脑动起来的重要组成部分。
下面我们来说一下流程控制需要了解哪些?
控制语句:
“顺序结构”代表“先执行a,再执行b”的逻辑。 比如,先找个女朋友,再给女朋友打电话;先订婚,再结婚;
“条件判断结构”代表“如果…,则…”的逻辑。 比如,如果女朋友来电,则迅速接电话;如果看到红灯,则停车;
“循环结构”代表“如果…,则重复执行…”的逻辑。 比如,如果没打通女朋友电话,则再继续打一次; 如果没找到喜欢的人,则再继续找。
在说Java控制语句之前大家可以观看一下课程,来帮助自己更加方便理解 【Java控制流程】 :
【推荐课程】Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通
JavaSE基础入门教程-只为初学者而著_高淇Java300集/Java零基础/java/Java入门到精通/JAVA编程/JavaSE/Java基础
JavaSE基础体系实战课程_Java流程控制及运算符操作实战_循环操作控制/JavaSE课程/数据类型/运算符/扫描仪/JavaSE入门实战教程
Java实战入门教程_Java零基础/在线教育/Java入门到精通/Java编程/java 零基础 Java初学入门
在还没有知道Java选择结构的时候,我们编写的程序总是从程序入口开始,顺序执行每一条语句直到执行完最后一条语句结束,但是生活中经常需要进行条件判断,根据判断结果决定是否做一件事情,这就需要选择结构。
选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。主要的条件判断结构有:if结构和switch结构。而if结构又可以分为if单分支结构、if-else双分支结构、if-else if-else多分支结构。
第一:选择结构
1、if单分支结构
if选择结构是由条件布尔表达式和语句系列(代码块)共同组成的编程流程控制。
条件表达式1~条件表达式n:必要参数。可以有多个表达式组成,但最后返回的结果一定要为boolean类型(true、false)
语句系列:可以是一条或多条语句,当条件表达式1的值为true时,执行语句序列1;当条件表达式2的值为true时,执行语句序列2;以此类推。
形式一:
if (表达式) {
代码块1;
}
if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。
示例:
int age = 20;
if (age > 18) {
String name = “Tom”;
System.out.println(“我叫” + name + “,已经” + age + “岁了,我成年了!”);
}
2、if-else双分支结构
形式二:
if (表达式) {
代码块1;
} else {
代码块2;
}
当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
示例:
int age = 16;
if (age > 18) {
String name = “Tom”;
System.out.println(“我叫” + name + “,已经” + age + “岁了,我成年了!”);
} else {
System.out.println(“我还未成年!”);
}
3、if-else if-else多分支结构
当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。
形式三:
if (表达式) {
代码块1;
} else if (表达式) {
代码块2;
} else {
代码块2;
}
示例:
if (age >= 0 && age <= 10) {
System.out.println(“少年”);
} else if (age <= 18) {
System.out.println(“青少年”);
} else if (age <= 30) {
System.out.println(“青年”);
} else if (age <= 50) {
System.out.println(“中年”);
} else {
System.out.println(“老年”);
}
4、嵌套if选择结构
执行流程:当外层条件满足时,再判断内层条件
注意:一个选择结构中,可嵌套另外一个选择结构(只要嵌套格式正确,支持任意组合)
if(外层表达式){
if(内层表达式){
内层代码块1
}else{
内层代码块2
}
}
else{
外层代码块
}
5、switch多重选择结构
swtich 语句是有控制表达式和多个 case 标签块组成。
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。
语法结构:
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:
默认语句;]
}
要注意,当布尔表达式是等值判断的情况,可以使用if-else if-else多分支结构或者switch结构,如果布尔表达式区间判断的情况,则只能使用if-else if-else多分支结构。
示例:
public class TestSwitch1{
public static void main(String [] args){
//给出分数
int score = (int)(Math.random()*81)+20;
//根据分数,给出等级
char grade;
switch(score/10){
case10 :
case9 :grade = 'A'; break;
case8 :grade = 'B'; break;
case7 :grade = 'C'; break;
case6 :grade = 'D'; break;
default :grade = 'E';
}
//输出等级
System.out.println("分数:"+score+",等级:"+grade);
}
}
第二:循环结构
重复执行某个操作很多次,使用循环可以简化代码
1、 while循环结构
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
语法结构:
while (布尔表达式) { 循环体; }
示例:
public class TestLoop3 {
public static void main(String[] args) {
int i = 1;
int sum = 0;
// 1+2+3+…+100=?
while (i <= 100) {
sum += i;//相当于sum = sum+i;
i++;
}
System.out.println("sum= " + sum);
}
}
2、do-while循环结构
do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。
语法结构:
| do { 循环体; } while(布尔表达式) ; |
|---|
示例:
public class TestLoop4 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum += i;
i++;
} while (i <= 100);//此处的;不能省略
System.out.println("sum= " + sum);
i = 1;
sum = 0;
do{
sum += i;
i+=2;
}while(i<100);
System.out.println("sum= " + sum);
}
}
3、for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
- 初始化部分设置循环变量的初值
- 条件判断部分为任意布尔表达式
- 迭代因子控制循环变量的增减
for循环在执行条件判定后,先执行的循环体部分,再执行步进。
语法结构:
for (初始表达式; 布尔表达式; 迭代因子) { 循环体; }
示例:
public class TestLoop5 {
public static void main(String[] args) {
//计算
int sum;
int i;
for (i = 1, sum = 0; i <= 100; i++) {
sum += i;
}
System.out.println("1+2+3....+100=" + sum);
i = 1;
sum =0 ;
for (; ; ) {
if (i > 100) {
break;
}
sum += i;
i++;
}
System.out.println("1+2+3....+100=" + sum);
sum = 0;
for (int j = 1; j <= 100; j++) {
sum += j;
}
System.out.println("1+2+3....+100=" + sum);
}
}
第三:循环控制语句
1、break语句
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
示例:
public class TestBreak{
public static void main(String [] args){
int sum = 0;
int i;
for(i=1;i<=100;i++){
sum +=i;
System.out.println("i="+i+",sum="+sum);
if(sum>=3000){
//break;
return;
}
}
System.out.println("i="+i+",sum="+sum);//10177 not 78
}
}
本来是要循环100次的,结果当i=77的时候,sum>=3000,此时break,意味着这后续的23次不执行了,提前结束循环。
break语句可以出现在循环和switch语句中
return语句作用:结束当前方法,和循环没有关系;每个方法最后都会有一个return
2、continue
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
示例:
public class TestContinue {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
/*
if(i%5==0){
System.out.print(i+"\t");
}
*/
if (i % 5 != 0) {
continue;
}
System.out.print(i + "\t");
}
}
}
本来是循环100次,使用了continue还是循环100次;当i=1,2,3,4,因为i%5!=0,不执行循环体后续的语句;当i=5,因为i%5==0,执行循环体后续的语句
学习目标
-
掌握if语句和switch语句的区别和使用场合
-
掌握break在switch中的用法以及default语句
-
掌握三种循环的书写格式以及执行顺序
-
掌握break和continue关键字,了解return的作用
-
掌握多重循环的使用,掌握流程控制中常见的一些算法
-
了解死循环和不可达语句
-
掌握方法的声明与使用,以及调用方法时的内存分析
-
掌握方法的重载和使用场合
以上就是 Java语言之流程控制,非常基础且重要的知识点,希望能够喜欢~~~