Java入门姿势:【流程控制篇】

213 阅读5分钟

流程控制对于任何语言都是一门非常重要的学习阶段,它提供啦程序整体运作流程的基础手段。也可以说流程控制是让电脑动起来的重要组成部分。

下面我们来说一下流程控制需要了解哪些?

293.gif

控制语句:

“顺序结构”代表“先执行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多分支结构。

328.gif

第一:选择结构

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);
}
}

2.gif

第三:循环控制语句

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,执行循环体后续的语句

学习目标

  1. 掌握if语句和switch语句的区别和使用场合

  2. 掌握break在switch中的用法以及default语句

  3. 掌握三种循环的书写格式以及执行顺序

  4. 掌握break和continue关键字,了解return的作用

  5. 掌握多重循环的使用,掌握流程控制中常见的一些算法

  6. 了解死循环和不可达语句

  7. 掌握方法的声明与使用,以及调用方法时的内存分析

  8. 掌握方法的重载和使用场合


以上就是 Java语言之流程控制,非常基础且重要的知识点,希望能够喜欢~~~

v2-075e7193af76b2be3e02a301fbf9152f_hd.gif

干货文章:Dimple:Java学习线路-巨制 超全完整版 超全 超全 超全