Java学习笔记6——Java控制语句(选择结构、循环结构、break语句和continue语句、带标签的break和continue、语句块)

Java控制语句

一、选择结构

选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。

​ 主要的选择结构有:if选择结构和switch多选择结构。有如下结构:

  1. ​ if单选择结构
if(布尔表达式){
  语句块
}

Math类的使用

1.java.lang包中的Math类提供了一些用于数学计算的方法。
2.Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1。
int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数

新手雷区

  1.如果if语句不写{},则只能作用于后面的第一条语句。 
  2.强烈建议,任何时候都写上{},即使里面只有一句话!
  1. if-else双选择结构
if(布尔表达式){
 语句块1
}else{
       语句块2
}
  1. if-else if-else多选择结构
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
    语句块n;
} else {
    语句块n+1;
}
  1. switch结构
switch (表达式) {
case1: 
语句序列1;
[break];
case2:
 语句序列2;
[break];
     … … …      … …
[default:
 默认语句;]
}

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。

​ 根据表达式值的不同可以执行许多不同的操作。switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。

​ 大家要注意,当布尔表达式是等值判断的情况,可以使用if-else if-else多选择结构或者switch结构,如果布尔表达式区间判断的情况,则只能使用if-else if-else多选择结构。

二、循环结构

循环结构分两大类,一类是当型,一类是直到型。

当型:

​ 当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。

直到型:

​ 先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。

1.while循环

while (布尔表达式) {
    循环体;
}

2.do-while循环

do {
        循环体;
     } while(布尔表达式) ;

do-while总是保证循环体至少会被执行一次!

3.for循环

for (初始表达式; 布尔表达式; 迭代因子) {
      循环体;
}
  • for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。

​ A. 初始化部分设置循环变量的初值

​ B. 条件判断部分为任意布尔表达式

​ C. 迭代因子控制循环变量的增减

​ for循环在执行条件判定后,先执行的循环体部分,再执行步进。

  • Java里能用到逗号运算符的地方屈指可数,其中一处就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,我们可以使用一系列由逗号分隔的表达式,而且那些表达式均会独立执行。

​ 1. 无论在初始化还是在步进部分,语句都是顺序执行的。

​ 2. 尽管初始化部分可设置任意数量的定义,但都属于同一类型。

​ 3. 约定:只在for语句的控制表达式中写入与循环变量初始化,条件判断和迭代因子相关的表达式。

​ 初始化部分、条件判断部分和迭代因子可以为空语句,但必须以“;”分开

编译器将while(true)与for(;;)看作同一回事,都指的是无限循环。

编译器将while(true)与for(;;)看作同一回事,都指的是无限循环。

​ 在for语句的初始化部分声明的变量,其作用域为整个for循环体,不能在循环外部使用该变量。在for语句的初始化部分声明的变量,其作用域为整个for循环体,不能在循环外部使用该变量。

三、break语句和continue语句

在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。

continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

注意事项

  1. continue用在while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。

  2. continue用在for循环中,跳到for循环的迭代因子部分。

四、带标签的break和continue

goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在Java语言中得到正式使用;Java没有goto语句。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子—带标签的break和continue。

​ “标签”是指后面跟一个冒号的标识符,例如:“label:”。对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

​ 在 “goto有害”论中,最有问题的就是标签,而非goto, 随着标签在一个程序里数量的增多,产生错误的机会也越来越多。 但Java标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过特别的方式到处传递程序的控制权。由此也引出了一个有趣的问题:通过限制语句的能力,反而能使一项语言特性更加有用。

public class Test18 {
    public static void main(String args[]) {
        outer: for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i / 2; j++) {
                if (i % j == 0){
                    continue outer;
                }
            }
            System.out.print(i + "  ");
        }
    }
}

语句块

语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

特立独行の猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值