Java基础03_流程控制语句_顺序_选择_循环

主要内容

  • 顺序结构
  • 选择结构
  • 循环结构

学习目标

  • 三种控制结构熟练使用

前言 流程控制

流程控制: 在一个程序执行的过程中, 语句块中各条语句的执行顺序.

问题: 为什么要进行流程控制?

例如: 一个打印1到5之间数字的小代码, 我们可以采用方式1: 顺序控制结构, 代码自上而下被机器依次执行.

System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);

如果是打印1-100呢?

System.out.println(1);
System.out.println(2);
...
...
System.out.println(99);
System.out.println(100);

这样写会出事故的. 既然是重复的事情, 大多数编程语言都具备了循环这种语句结构, 我们只需要告诉机器, 针对哪些情况做同样的事情就好了.所以有如下方式2, 也就是循环控制语句:

int num = 1;
//告诉机器要做同样事情的条件范围, 于是, 程序员可以少写很多代码了.
while(num<=100){
	System.out.println(num);
	num++;
}

还有些情况, 机器自动的做什么操作是不明确的.

例如: 学员分配宿舍, 如果是男的,系统分配一个男生宿舍; 女的自动分配一个女生宿舍. 也就是针对学员的性别做判断, 执行不同的操作, 这就是选择结构, 或者叫分支结构.

String gender = "男"; 	
//String gender = "女";	
if(gender=="男"){		//分支结构会根据gender不同取值, 执行不同的操作
	System.out.println("请到男生宿舍报道");
}else{
	System.out.println("请到女生宿舍报道");
}

现在, 你知道了, 这些不同的控制结构, 可以让我们更容易实现不同的功能.

问题: 流程控制结构有哪些?

顺序结构, 选择(分支)结构, 循环结构

第一节 顺序结构

1.1 概述

顺序结构: 代码自上到下,依次执行.

​ 我们在前两章中写的代码都是顺序执行的, java虚拟机在运行字节码程序的时候, 会按照代码顺序, 自上到下依次执行.

第二节 选择结构

2.1 概述

选择结构: 分情况判断, 根据不同的情况, 选择执行不同的代码块.

2.2 种类(2种)

选择控制结构1: if选择语句

语法格式:

//------------if语法1:------------
if(布尔表达式){
	执行语句;
}

//------------if语法2:------------
if(布尔表达式){
	执行语句1;
}else{
	执行语句2;
}

//------------if语法3:------------
if(布尔表达式){
	执行语句1;
}else if(布尔表达式){
	执行语句2;
}...{
	...;
}else{
	执行语句n;
}
选择控制结构2: switch选择语句

语法格式:

switch(表达式){
case 目标值1:
	执行语句1;
	break;
case 目标值2:
	执行语句2;
	break;
...:
	...;
	break;
case 目标值n:
	执行语句n;
	break;
default:
	执行语句default;
	break;
}

switch语句的执行流程:

​ 1, 求表达式的值

​ 2, 把上面表达式的值依次与case后面的目标值去比对

  • 如果比对成功, 执行该case块的执行语句, 直到遇上break跳出整个switch块
  • 如果没有比对成功, 那么继续比对下一个case

​ 3, 如果所有case目标值都没有比对成功, 那么执行default语句块.

学员提问1: case后面的目标值可以使用哪些Java数据类型?

答: byte, short, int, char, enum(JDK5), String(JDK7)

其实本质上,switch只支持整形数据.

byte,short,char类型可以在不损失精度的情况下向上转型成int类型;

枚举类型有一个ordinal方法,该方法实际上返回一个int类型的数值;

String类中有一个hashCode()方法, 结果也是返回int类型.

使用的时候, 记住上面几种类型就可以了.

学员提问2: break省略会有什么现象?

​ 答: 在匹配成功的case目标值开始执行下面的语句, 因为没有break终止继续执行, 那么下面的case目标值不再检测, 直接执行下去(成了顺序执行结构了).

第三节 循环结构

3.1 概述

​ 循环语句: 在满足条件的情况下, 反复执行某一段代码, 这段被重复执行的代码被称为循环体语句, 当反复执行这个循环体时, 需要在合适的时候把循环条件修改为false, 从而结束循环,否则循环将一直执行下去,形成死循环.

3.2 种类(3种)

循环控制结构1: for循环语句

语法格式:

for(初始化变量;循环条件;表达式){
	循环体;
}

执行流程:

  1. 创建初始化变量;

  2. 不断使用初始化变量去做循环条件判断

    循环条件判断返回true,执行循环体;

    循环条件判断返回false,退出循环.

  3. 表达式用于修改初始化变量

注意事项:

  1. 初始化变量,只执行一次;
  2. 表达式用于改变变量;
  3. 循环条件用于限定循环的次数.
循环控制结构2: while循环语句

语法格式:

创建初始化变量;
while(循环条件){
	循环体;
	改变循环变量;
}

for和while的区别:

  • 两者可以互换使用;
  • for适合于次数一定的循环;
  • while适合次数不限定的循环.
循环控制结构3: do…while循环语句

语法格式:

do{
	循环体;
	循环变量变更;
}while(循环条件判断);

3.4 循环控制

场景: 到现在为止的循环语句都是循环到条件不符合才会终止, 是否可以中途实现程序的跳出呢?

break: 终止循环

continue: 跳过本次循环,进入下一轮循环

3.5 for和while的选择

循环代码编写技巧

1, 循环次数明确一般用for,循环次数不定一般用while

2, 设置初始变量值

3, 设置循环的禁止条件(否则会死循环下去)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

能力工场小马哥

如果对您有帮助, 请打赏支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值