java 控制语句_三、Java控制语句

一 、顺序结构

1. 不论哪一种语言,都会提供两种基本流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性得执行某段代码,循环结构则用于实现根据循环条件重复执行代码,Java设计者同样提供了这两种流程控制结构语法,设计者提过了if和switch两张分支语句,并提供了while,do while,和for三种循环语句.Java 1.5提供了 foreach循环更能简单方便的遍历.还提供了break和continue来控制程序循环结构.

2. 数组也是大部分编程语言都支持的数据结构,Java数组类型是一种引用类型的变量,设计者通过操作引用变量来操作数组,例如数组初始化,访问数组元素,获取数组长度.

1.1 介绍

1. 任何编程语言最常见得程序结构就是顺序结构.顺序结构就是程序从上到下逐行执行,中间没有任何判断和跳转.

2. 如果main方法得多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面代码后执行.着意味着如果没有流行控制则代码从上到下

1.2 代码演示

public static void main(String[] args) {

System.out.println("1")

System.out.println("2");

}

// 控制台输出

1

2

二、if 分支语句

2.1 介绍

1. if 语句 使用布尔表达式或者布尔值作为分支条件来进行分支控制,通常有三种表示形式

2.2 语法格式

// 第一种简单if语句

if (expression) {

//消息体

}

// 第二种形式

if (expression) {

//消息体

} else {

//消息体

}

// 第三种形式

if (expression) {

//消息体

}else if (expression) {

//消息体

}else if(expression){

//消息体

}else {

//消息体

}

//可以有多个else if

2.3代码解释

第一种最简单,如果(expression)里为true则执行消息体内容

第二种如果()里为true则执行消息体,否则执行else里内容

第三种如果()里为true则执行第一个消息体内容,接下来回去判断第二个else if如果第二个为true则执行第二个消息体,后面同理,如果最后都没有则执行else内容

通常来说使用if else 最先处理 范围数据范围最小的

2.4代码演示

if (4 > 2) {

System.out.println("我是pain1")

}else {

System.out.println("我是pain2")

}

// 打印输出我是pain1 因为表达式结果为true.

int pain = 2+3;

if (pain==1) {

System.out.println("我是pain1")

}else if (pain==2) {

System.out.println("我是pain2")

}else if(pain==3) {

System.out.println("我是pain3")

}else if(pain==5) { //很明显2 + 3= 5

System.out.println("我是pain5")

}else {

System.out.println("不知道") // 执行这块代码

}

// 输出-> 我是pain5

三、switch 分支语句

3.1 介绍

1. switch语句由一个控制表达式和多个case组成,和 if 语句不同的是,switch语句后面的控制表达式只能是byte,short,char,int四种整数类型,枚举类型和java.lang,string类型,不能是boolean类型

3.2 语法格式

switch (expression) {

case condition1: {

// 消息体

break;

}

case condition2: {

// 消息体

break;

}

case condition3: {

// 消息体

break;

}

case condition4: {

// 消息体

break;

}

default: {

}

}

3.2 代码解释

这种分支结构执行先对expression求值,然后依次匹配condition1,condition2...,conditionN等值遇到匹配的值即执行对应得消息体,如果所有case 标签后的值都不予expression值匹配则执行default标签后面的代码

3.3 代码演示

// 省略main方法

char score = 'C';

switch (score) {

case 'A': {

System.out.println("优秀")

break;

}

case 'B': {

System.out.println("良好")

break;

}

case 'C': {

System.out.println("中")

break;

}

case 'D': {

System.out.println("及格")

break;

}

}

// 最终输出-> 中

3.4 注意事项

break必须加,不然会造成代码穿透,什么是代码穿透就是.会接着往下执行,程序不会结束返回

switch语句表达式,如果是String类型,则必须是 java.lang.String类型 ,不能是StringBuffer或者StringBuffilder这两种类型

四、while 循环

1. 4-6章节将会讲解循环,什么是循环?就是重复的做某一事情.当然java设计者也提供了循环条件的支持,循环也是java基础的难点和重点,一些初入编程的都是在循环这里栽跟头,所以需要多加思考..循环学完也就基本有了编程思想..

2. 循环初学者不要把他想太难,其实本质上就是为我们重复完成任务.只不过Java通过某种变量控制,可以操作循环而已

4.1 while循环语法

while(expression) {

// 消息体

}

// 如果expression得值为true则执行消息体否则不执行,如果一直为true则进行死循环

4.2代码演示

// 胜率main方法

int count = 0;

// 当count小于10进行循环

while (count < 10) {

System.out.print(count);

count++;

}

// 执行结果

0123456789

4.3 代码解释

4.2代码流程解释

首先count初始化为0, 0确实小于10.此时打印0 ,然后count++了,那么此时count=1

因为是循环,所以又开始执行了,此时1,1确实小于10打印1,此时count++,此时count=2

下面依次执行...

最后count=10,10不小于10条件为false.结束循环.

while循环虽好,但一定要控制表达式expression 如果逻辑错误就一直进入死循环!!

五、do while循环

5.1 do while循环语法

do {

// 消息体

}while(expression);

// 首先执行消息体内容,在判断expression.如果expression值为true,继续执行消息体

5.2 do while和while区别:

1. while是先判断expression,再执行消息体内容.

2. do while 是不管你expression值是true还是false我先执行消息体内容最后判断expression

5.3 代码演示

// 胜率main方法

int count = 1;

do {

System.out.print(count);

count++;

}while(count < 10);

// 最终输出

123456789

5.4代码解释

首先初始化count,把count值赋值为1;

先执行打印1

cout++,此时cout=2

又因为cout<10条件成立,又开始执行do里面的消息体

最终当cout得值为10时,10<10 为false,循环结束.

最终展示123456789

六、for循环

6.1 简介

1. for循环是更加简洁的循环语句,大部分情况下,for循环可以代替while循环、do while循环、for循环基本语法如下

6.2 语法格式

for([init_statement];[test_expression];[iteration_statement]) {

//消息体

}

6.3语法定义

init_statement:初始化语句,每次都会先执行 (类似上面while里面的int count=0)

test_expression:表达式结果为true或者false(类似上面while里面count < 10)

迭代值:即每次循环完初始化值要做的操作(类似上面while消息体里面的count++)

6.4代码演示

// 胜率main方法

for(int i =0;i <5;i++) {

System.out.println("老鼠爱上猫");

}

// 打印结果->

老鼠爱上猫

老鼠爱上猫

老鼠爱上猫

老鼠爱上猫

老鼠爱上猫

6.5代码执行流程

首先初始化int i = 0;

此时会去判断0<5;因为结果为true

去打印"老鼠爱上猫";

然后i++ 此时i=2

然后还再会去判断 2 <5 此时结果为true

去打印"老鼠爱上猫";

此时i++,此时i=3

依次循环2-4操作...

到最后i=5,结果为false

不执行消息体

七、嵌套循环

7.1 介绍

1. 什么是嵌套循环?嵌套循环就是把一个循环,放在另外一个循环里.

2. 嵌套循环相较于循环更加绕,如果是第一次接触则会很陌生代码流程我会详细讲解执行顺序

7.2 代码演示

// 省略main方法

for(int i = 0; i < 2; i++) {

for(int j = 0; j < 3;j++) {

System.out.println("我是内层循环");

}

System.out.println("我是外层循环");

}

我是内层循环

我是内层循环

我是内层循环

我是外层循环

我是内层循环

我是内层循环

我是内层循环

我是外层循环

7.3 代码流程分析

嵌套循环只需要记着,外层循环一次.内层循环一轮即可.秉着这个观念可以看7.2

首先 初始化i,此时i=0,

0 小于2 结果为true,下一步进入内层循环 (此时不打印我是外层循环)

此时j =0 ;

0<3,结果为true

打印我是内层循环

j++此时j=1

接着比较1 ❤️

打印我是内层循环

j++此时i=2

接着比较2 ❤️

打印我是内层循环

j++此时3

接着比较3<3,结果为false

注意此时跳出内层循环,打印我是外层循环,

重复以上操作.因为外层循环两次,就打印了两回.

7.4 嵌套循环注意

1. 嵌套循环只需要谨记,外层循环一次,内涵循环一周.

八、控制循环结构

8.1 什么是控制循环结构

1. 控制循环结构,循环结构已经知道了就是循环,控制就代表控制循环语句的走向

2. 那是通过什么控制的呢?可以通过break,continue关键字来进行控制循环的走向

3. 有了这些就使循环,更加强大扩展性更加强大

8.2 代码演示break

1. break:退出当前循环.

2. 演示两种情况,第一种当普通循环使用break场景

// 省略main方法

for(int i = 0; i < 2; i++) {

System.out.println("我是pain");

}

// 正常来说即打印

System.out.println("我是pain");

System.out.println("我是pain");

// 如果此时我打一个break

for(int i = 0; i < 2; i++) {

System.out.println("我是pain");

break;

}

//则打印

System.out.println("我是pain");

8.3 代码执行流程

进入循环判断i<0

输出我是pain

i++,此时i=1

此时遇到break,退出当前循环

8.4 嵌套循环的控制使用方法break

1. 如果想退出嵌套循环得方法,即可以在break:XXX ,在需要退出嵌套循环的上面加这个xx:标签即可

8.5 代码演示

// 省略main方法

outer://这里的outer代替xx

for(int i = 0; i < 5; i++) {

for (int j = 0; j < 3; j++) {

System.out.println("i的值为:"+i + "j的值为" + j);

if (j == 1){

//跳出outer标签标示的循环

break outer;

}

}

}

//打印输出->

i得值为0,j得值为0

i得值为0,j得值为1

8.6 代码分析

进入外层循环,i=0,0小于5结果true,

之后进入内层循环,j=0;j<3,结果为true,打印->i得值为0,j得值为0

此时j++,j=1

判断1 ❤️,结果true,打印输出i得值为0,j得值为1

又因为判断了,这里遇到了break,此时标签outer,在最外层循环

最终退出最外层循环

8.7 细节分析

1. 通常紧跟break之后的标签,必须在break所在循环的外层循环之前定义才有意义,因为breka,默认就是退出当前循环

8.8 循环控制continue

1. continue是什么意思?他有何作用?

2. continue中文翻译过来就是继续的意思.

3. 大家只需要,在这里表达的含义就是:当代码里使用了continue,则代表跳出当前循环,开始下次循环,与break不同的是,break退出整个循环,而continue是退出当前循环.

8.9 代码演示

// 省略main方法

for(int i = 0; i < 2; i++) {

if (i == 1) {

continue;

}

System.out.println("我是pain");

}

// 最终打印

System.out.println("我是pain");

8.9代码执行分析

首先初始化i=0,判断0确实小于2,

又因为此时i=0结果为false则不进

打印我是pain

此时i++,i=1

之后1确实小于2结果true

进入循环,之后判断1==1结果true,执行continue,

此时i++,此时i=2

又进入循环2<2,结果为false.

退出循环程序结束

最终打印即->我是pain

8.91 嵌套循环中使用continue

// 省略main方法

outher:

for(int i = 0; i < 2; i++) {

for (int j = 0; j < 2; j++) {

System.out.println("i的值为:"+i + "j的值为" + j);

if(j == 1) {

continue outher;

}

}

}

// 最终输出

i的值为0,j得值为0

i的值为0,j得值为1

i的值为1,j得值为0

i的值为1,j得值为1

8.92代码执行顺序分析

初始化外层循环,i=0,i小于2结果为true,进入内层循环

初始化内层循环,j=0,j小于2结果为true,执行方法体打印i得值为0,j得值为0

之后j++,此时j得值为1

初始化内层循环,j=1,j小于2结果为true,执行方法体打印i得值为0,j得值为1

之后判断后,1=1,进入continue.所以就放弃此次循环,进入下次循环,跳到外层循环

外层循环,i=1,i小于2结果为true,进入内层循环

内层循环,j=0,j小于2结果为true,执行方法体打印i得值为1,j得值为0

之后j++,此时j得值为1

内层循环,j=1,j小于2结果为true,执行方法体打印i得值为1,j得值为1

之后判断后,1=1,进入continue.所以就放弃此次循环,进入下次循环,跳到外层循环

此时i=2,2小于2结果为false,程序终止..

最终打印如下

i的值为0,j得值为0

i的值为0,j得值为1

i的值为1,j得值为0

i的值为1,j得值为1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值