Java流程控制(顺序、选择及循环结构)

一、顺序结构

Java的基本结构就是顺序结构,代码按照顺序依次执行。
在这里插入图片描述

二、选择结构

(一)if选择结构

1、if单选择结构

if单选择结构也叫if单条件分支语句,即根据一个条件来控制程序执行的流程。
在这里插入图片描述

语法:

if(布尔表达式){
	//如果表达式为TRUE将执行的语句
}

2、if双选择结构

当需要有两个判断时,就要用双选择结构,所以就有了if…else语句。
在这里插入图片描述
语法:

if (布尔表达式){
	//表达式值为TRUE将执行的语句
}else{
	//表达式值为FALSE将执行的语句
}

3、if多选择结构

现实问题多种多样,如果存在多级判断,比如输入不同段的分数,要求输出对应分数段的等级,则需要用多选择结构来处理。
在这里插入图片描述

语法:

if (布尔表达式1){
	//表达式1的值为TRUE将执行的语句
}else if (布尔表达式2){
	//表达式2的值为TRUE将执行的语句
}else if (布尔表达式3){
	//表达式3的值为TRUE将执行的语句
}else{
	//以上表达式的值都不为TRUE将执行的语句
}

4、if嵌套结构

if…else语句的嵌套也是合法的,也就是说你可以在另一个if或者if…else语句中使用if或者if…else语句。
语法:

if (布尔表达式1){
	//表达式1的值为TRUE将执行的语句
	if (布尔表达式2){
		//表达式2的值为TRUE将执行的语句
	}
}

(二)Switch多选择结构

多选择结构还有一个实现方式就是switch…case语句。switch…case语句判断一个变量与一个系列值中的某个值是否相等,每个值成为一个分支。

语法:

switch(expression){
	case value:
		//语句
		break; //可选
	case value:
		//语句
		break; //可选
	//可以有任意数量的case语句
	default: //可选
		//语句
}

switch语句中的变量类型可以是:

  • byte、short、int或者char
  • 从jdk7开始支持字符串String类型
  • 同时value处必须为字符串常量或字面量

注意:下文将会阐述关于break语句的一些说明

三、循环结构

(一)while循环

while循环是最基本的循环结构。

语法;

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

循环条件一直为TRUE就会造成“死循环”,我们大部分情况是要让循环停止下来的,需要一个终止循环的条件,少部分情况则需要循环一直进行,比如服务器的请求响应监听等。

(二)do…while循环

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

语法:

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

while和do…while的区别:

  1. while先判断后执行,而do…while先执行后判断
  2. do…while总是保证循环体会被至少执行一次

(三)for循环

Java提供了另一种循环语句——for循环语句,使一些循环结构更加简单。

语法:

for (初始化; 布尔表达式; 修正变量){
	//循环体
}

for语句的执行规则如下:

  1. 完成初始化工作。可以初始化一个或多个循环控制变量,可以是空语句;
  2. 判断布尔表达式,若值为TRUE,则进行第3步,否则结束for循环;
  3. 执行一次循环体,然后进行修正变量,以改变循环条件,进行第2步;
  4. 结束for循环。

例如:

public class ForDemo04 {
    public static void main(String[] args) {
        //用for循环输出0~5
        for (int i=0; i<5; i++){
            System.out.println(i);
        }
    }
}

在这里插入图片描述

四、其他

(一)break和continue语句

  • break语句
    break用于强制退出循环,不执行循环中的剩余语句。例如上文提到的,在switch语句中用到了break语句。
    我们再来举一个例子,已知一个学生成绩,求其对应的等级:
    我们先将break语句写入
public class BreakDemo {
    public static void main(String[] args) {
        char grade = 'C'; //这里为方便举例,将成绩写死
        switch (grade){
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("合格");
                break;
            case 'D':
                System.out.println("不合格");
                break;
        }
    }
}

结果是正确的
在这里插入图片描述
然后我们将所有的break语句去掉

public class BreakDemo {
    public static void main(String[] args) {
        char grade = 'C'; //这里为方便举例,将成绩写死
        switch (grade){
            case 'A':
                System.out.println("优秀");
                //break;
            case 'B':
                System.out.println("良好");
                //break;
            case 'C':
                System.out.println("合格");
                //break;
            case 'D':
                System.out.println("不合格");
                //break;
        }
    }
}

结果是这样的
在这里插入图片描述
也就是说,如果不写break语句,grade这个变量与下面的case语句匹配时,当它匹配到第三个case语句,打印出“合格”之后,不会结束程序,而是继续向下执行下一个case语句的内容,这也就说明了break的作用。

  • continue语句
    continue语句用在循环体语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
    我们再来举个例子,输出100以内不含10和10的倍数的数:
public class ContinueDemo {
    public static void main(String[] arg) {
        int i = 0;
        while (i < 100){
            i++;
            if (i%10==0){ //对10取余,等于0时说明是10或10的倍数
                System.out.println(); //换行
                continue;
            }
            System.out.print(i+"\t"); //输出数字
        }
    }
}

在这里插入图片描述
可以看到,当遇到10或10的倍数时,由于加了continue语句,所以程序会终止当前循环, 而转入进行下一次循环。

(二)数组与for循环

jdk5引入了一种增强型for循环,主要用于遍历数组或集合。

语法:

for (声明语句:表达式){
	//循环体
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

例如:

public class ForDemo05 {
    public static void main(String[] args) {
        //定义一个数组
        int[] numbers = {1, 2, 3, 4, 5};

        //遍历数组的元素
        for (int x:numbers){
            System.out.print(x);
        }
    }
}

在这里插入图片描述
也就是说,每次循环都会从numbers里面取值,然后赋值给变量x。

以上仅个人学习经验,有不足请指正~谢谢大家

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值