JavaSE第六章 控制语句

本文介绍了Java中的控制语句,包括选择语句(if、switch)、循环语句(for、while、do...while)以及转向语句(break、continue)和返回语句。详细阐述了各语句的语法结构、执行原理及其在程序流程控制中的应用。
摘要由CSDN通过智能技术生成

一、什么是控制语句

  • 控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制
  • 控制语句的出现可以让我们的程序具有逻辑性、条理性,可以使用控制语句来实现一个“业务”

二、控制语句的分类

选择语句、循环语句、转向语句、返回语句

2.1 选择语句

  • 选择语句也可以叫做分支语句,通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支

2.1.1 if

if 语句是分支语句,也可以叫做条件语句
对于一个完整的 if 语句来说(if 嵌套除外),在任何情况下只能有1个分支执行,不可能存在2个或多个分支执行,if 语句中只要有1个分支执行了,整个 if 语句就结束
语法结构:

  • 第一种写法
if(布尔表达式){
    Java语句;
    Java语句;
}

该语法的执行原理:如果布尔表达式的结果是true,则执行大括号中的代码,否则不执行

  • 第二种写法
if(布尔表达式){    //分支1
    Java语句;
}else{           //分支2
    Java语句;
}

该语法的执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行;如果布尔表达式的结果是false,则执行分支2,分支1不执行,以上语句可以保证一定会有一个分支执行

  • 第三种写法
if(布尔表达式1){          //分支1
    Java语句;
}else if(布尔表达式2){    //分支2
    Java语句;
}else if(布尔表达式3){    //分支3
    Java语句;
}else if(布尔表达式4){    //分支4
    Java语句;
}......

该语法的执行原理:先判断布尔表达式1,如果布尔表达式1的结果为true,则执行分支1,然后 if 语句结束;如果布尔表达式1的结果是false,则执行分支2,然后 if 语句结束(从上往下依次此判断,主要看第一个true发生在哪个分支上,第一个true对应的分支执行,只要一个分支执行,整个 if 结束)

  • 第四种写法
if(布尔表达式1){          //分支1
    Java语句;
}else if(布尔表达式2){    //分支2
    Java语句;
}else if(布尔表达式3){    //分支3
    Java语句;
}else if(布尔表达式4){    //分支4
    Java语句;
}else{                   //分支5
    Java语句;
}

该语法的执行原理:分支1、2、3、4没有一个成立的,则执行else

  • 以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行
  • 当分支当中的“Java语句;”只有一条,那么大括号{}可以省略,但为了可读性,最好不要省略;
  • 控制语句和控制语句之间是可以嵌套的,嵌套后不要冗杂在一起分析代码,最好一条语句一条语句的分析

2.1.2 switch

swich语句是选择语句,也可以叫做分支语句

  • 语法结构
switch(){
case1:
    Java语句;
    Java语句;
    ......
     break;
case2:
    Java语句;
    Java语句;
     ......
     break;
case3:
    Java语句;
    Java语句;
    ......
    break;
......
default:
    Java语句;
}
  • "值"的确定
    在JDK1.5之前,switch循环只支持 byte short int char 四种数据类型
    JDK1.5 在switch循环中增加了枚举类与 byte short int char 的包装类,对四个包装类的支持是因为Java编译器在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值
    JDK1.7开始支持String类型,String类型有一个hashCode算法,结果也是int类型,而 byte short char 类型可以在不损失精度的情况下向上转型成 int 类型,所以总的来说,可以认为switch中只支持int
    该语法的执行原理:拿“值”与“值1”进行比较,如果相同,则执行该分支中的Java语句,然后遇到“break;”语句,switch语句就结束了;如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的Java语句,然后遇到“break;”语句,switch结束…
    如果分支执行了,但分支最后没有“break;”,此时会发生case穿透现象(如:“值”与“值1”匹配完成,执行完Java语句后,发现没有“break;”语句,则直接执行下面的Java语句,“值”不与“值2”进行比较…)
  • 其中break语句和default分支不是必须的
  • switch语句支持 int 类型和 String 类型(注意JDK版本,JDK8之前不支持String类型),但是 byte、short、char(小容量)也可以使用在switch语句当中,因为 byte、short、char可以进行自动类型转换(小容量自动转大容量)
  • 当所有的 case 都没有匹配成功,则执行default 语句

2.2 循环语句

  • 循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。(为了减少代码复用性,使用循环语句)

2.2.1 for

  • 语法结构
for(初始化表达式;条件表达式;更新表达式){
    循环体;//循环体由Java语句构成
    Java语句;
    Java语句;
    ......
}

该语法的执行原理:先执行初始化表达式,并且初始化表达式只执行一次,然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体,循环体结束之后,执行更新表达式,更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体,直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止
初始化表达式最先执行,并且在整个循环中只执行一次;初始化变量属于for循环局部变量,只能在for循环中使用,在main方法中没有办法直接使用,for循环结束之后,变量的内存就释放了
条件表达式结果必须是一个布尔类型(true或false)
更新表达式是为了控制循环的次数,即更新某个变量的值,这样条件表达式的结果才有可能从true变成false,从而终止for循环的执行,如果缺失更新表达式,很有可能会导致死循环

  • 初始化表达式、条件表达式、更新表达式都不是必须的
public static void main(String[] args){
    for(;;){
        System.out.println("死循环");
    }
}

2.2.2 while

  • 语法结构
while(布尔表达式){
    循环体;
}

该语法的执行原理:判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束

  • while循环的次数是0~n次

2.2.3 do…while

  • 语法结构
do {
    循环体;
}while(布尔表达式);

该语法的执行原理:先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false则循环结束

  • do…while循环的次数是1~n次

2.3 转向语句

2.3.1 break

  • break与continue一样,一个单词成为一条语句
  • break语句作用
  1. 用在switch语句中,用来终止switch语句的执行,防止case穿透现象
  2. 用在循环语句中,用来终止循环的执行(默认情况下终止离它最近的循环
  • 通过标识符的方式使用break语句终止对应的循环 a:for b:for(这种语法很少用到)
a:for(int k = 0; k < 2; k++){
    b:for(int i = 0; i < 10 ;i++){
        break a;
    }
    System.out.println("i ==>" + i);
}
System.out.println("-----------------")

2.3.2 continue

  • continue与break一样,一个单词成为一条语句
  • continue语句作用
    终止当前“本次”循环,直接进入下一次循环继续执行
for(){
    if(){    //当这个条件成立时,执行continue语句
        continue;    //当这个continue语句执行时,continue下面的代码不执行,直接进入下一次循环执行
    }
    //以上的continue一旦执行,以下代码不执行,直接执行更新表达式
    Java语句1;
    Java语句2;
    Java语句3;
}
  • 通过标识符的方式使用continue语句指定对应的循环 a:for b:for(这种语法很少用到)

2.4 返回语句

  • “return;”的作用是用来终止当前的方法
  • “return 值;”的作用是返回方法的执行结果
    只要有“return”关键字的语句执行,当前方法必然结束
  • 在同一个域中,return语句下面不能再编写其他代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jayco江柯

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值