Java学习(六)--流程控制

本文详细介绍了Java编程中的顺序结构、选择结构(包括if语句和switch语句)、循环结构(如while、do-while和for循环,以及for-each和嵌套循环),并讨论了跳转语句和标签语句的使用。

顺序结构

顺序结构:系统默认自上而下一行一行地执行该程序;

选择结构

(1)if语句

说明:

if、else if、else后面的大括号都可以省略,默认执行第一句,只是不建议省略,可读性差;

使用最多的条件分支结构;

if语句是根据条件判断之后再做处理的一种语法结构,用来描述一个“二岔路口”,只能选择其中一条路来继续走。

(2)while语句

说明:

1.case 常量值不能重复
    类型为 char、byte、 short 或 int 的常量表达式;枚举常量;
    从 Java SE 7 开始, case 标签还可以是字符串字面量

2.switch判断 的变量类型
    只能是 int或char、short、byte、枚举
    String(jdk1.7以后)
        只能是 java.lang.String 类型
        不能是 StringBuffer 或 StringBuilder 这两种字符串的类型
    应与case后的常量类型一致,或者可以自动转成可以相互比较的类型

3、default
    表示“默认”,即其他情况都不满足
    default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序执行结果
    通常,default 块放在末尾,也可以省略不写

4、break
    表示“停止”,即跳出当前结构
        用来执行完一个case分支后使程序跳出Switch语句

5、如果在 case 分支语句的末尾没有 break 语句,有可能触发多个 case 分支。这种情况相当危险,常常会引发错误。因此在程序中不建议使用 switch 语句。

    如果你喜欢 switch 语句,编译代码时可以考虑加上 -Xlint:fallthrough 选项,如下所示:

javac -Xlint:fallthrough

这样一来,如果某个分支最后缺少一个 break 语句,编译器就会给出一个警告消息;

比较

 if 语句使用布尔表达式或布尔值作为分支条件来进行分支控制;

 switch 语句则用于对多个整型值进行匹配,从而实现分支控制;

能用switch的,肯定能用if,反之,能用if的,不一定能用switch;

如果判断的具体数值不多,而且符合 byte、 short 、 int、 char, enum[枚举], String 这 6 种类型,建议使用 swtich 语句;

其他情况:对区间判断,对结果为 boolean 类型判断,建议使用if语句。

循环结构

介绍

循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况;

Java 中采用的循环语句与C语言中的循环语句相似,主要有 while、do-while 和 for;

Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的;

 (1)while

 (2)do-while

 (3)for

说明:

通常使用在知道循环次数的循环中,是应用最广泛、功能最强的一种循环语句;

三个表达式 可以省略,但两个分号必不可少;当三者均为空的时候,相当于一个无限循环。

在 for 循环语句中,无论缺少哪部分条件表达式,都可以在程序的其他位置补充,从而保持 for 循环语句的完整性,使循环正常进行;

表达式1可以有多个变量声明,但必须是同一类型,但用逗号隔开;

表达式3可以有多个变量更新,用逗号隔开;

(4)增强for

说明:

foreach 循环语句是 for 语句的特殊简化版本(Java 1.5 的新特征之一),主要用于执行遍历功能的循环;它无须循环条件,无须循环迭代语句,这些部分都由系统来完成;

foreach 循环自动迭代数组的每个元素,当每个元素都被迭代一次后,foreach 循环自动结束;

通常不要对循环变量进行赋值,虽然这种赋值在语法上是允许的,但没有太大的实际意义,而且极容易引起错误;

foreach 中的循环变量相当于一个临时变量,系统会把数组元素依次赋给这个临时变量,而这个临时变量并不是数组元素,它只是保存了数组元素的值。因此,如果希望改变数组元素的值,则不能使用这种 foreach 循环;

(5)嵌套循环

说明:

  嵌套循环是一个循环中又嵌套了另一个完整的循环结构,即把内层循环当成外层循环的循环体;

  三种循环中,都可以嵌套另外一种任意的循环结构;

 假设外层循环的循环次数为 n 次,内层循环的循环次数为 m 次,那么内层循环的循环体实际上需要执行 n×m 次;      
        如果外层循环的循环条件允许,则开始执行外层循环的循环体

        当内层循环执行结束,且外层循环的循环体执行结束时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体

执行特点
    先执行外层循环,然后执行内层循环

比较

相同点

    都有循环四要素
    都能实现任意形式的循环结构;

不同点

    执行顺序不同,for、while先判断后执行do while先执行后判断
    执行效率不同, do while效率最高
    执行效果不同, do while 无条件执行一次,而while和for  如果第一次条件不成立,执行0次
    语法不同

其他

跳转语句

public class GotoDemo {
    public static void main(String[] args) {
        label: for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 8; j++) {
                System.out.println(j);
                if (j % 2 != 0) {
                    break label;
                }
            }
        }
    }
}

被加标签的代码块必须包围 break 语句,但是它不需要直接包围 break 的块。
也就是说,可以使用一个加标签的 break 语句来退出一系列的嵌套块,但是不能使用 break 语句将控制权传递到不包含 break 语句的代码块;

标签语句必须和循环匹配使用,使用时书写在对应的循环语句的上面,标签语句以冒号结束。如果需要中断标签语句对应的循环,可以采用 break 后面跟标签名的方式

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hahaha2221

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

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

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

打赏作者

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

抵扣说明:

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

余额充值