Promise 二叉树排序 k8s 智慧树 cordova authentication pdo mockito jScroll 后台管理系统模板 ai视频教程下载 在线考试系统代码 spark算法 abaqus是什么软件 java清空数组 mysql学习 如何配置python环境 java中string java发邮件 java数组转集合 java获取本机ip java语言是什么 javahttp java查看变量类型 props 字幕提取 模拟人生2夜生活 ppt格式刷怎么用 男网红头像 神魔辅助 微信问卷调查怎么做 3dmax材质编辑器 日志软件 jquery添加样式 ps测量长度 XR基带 系统重装软件下载 输入法修复 玛拉顿 rom定制大师
当前位置: 首页 > 学习教程  > 编程语言

JAVA中的流程控制语句

2020/9/19 15:46:52 文章标签:

文章目录

  • 前言
  • 1.顺序结构
  • 2.分支结构
    • 2.1 if语句
    • 2.2 switch 语句
  • 3.循环结构
    • 3.1 while循环
    • 3.2 do while循环
    • 3.3 for循环
    • 3.4 控制循环结构
      • 3.4.1 break
      • 3.4.2 continue
      • 3.4.3 return

前言

李刚老师《JAVA疯狂讲义》第5版,第4章学习笔记。

1.顺序结构

如果没有其他流程控制语句,JAVA方法中的语句就是顺序结构,从上至下执行。

2.分支结构

JAVA中提供了两种分支结构:if语句和switch语句。

2.1 if语句

if语句的完整形式如下:

if(logic expression){
	//这里可以有多个statement
	statement;
}
// else if 语句可以有0个或者多个
else if(logic expression) {
	statement;
}
//else语句可以省略,最多有一个
else{
	statement;
}

注意

  1. if后面括号中的logic expression必须是一个逻辑表达式,返回值只能是true或false
  2. 在使用if else语句时,一定要首先处理条件范围更小的情况,例如:
public class demo{
	public static void main(String[] args){
		int age = 45;
		if(age > 20){
			System.out.println("青年人");
		}
		else if (age > 40){
			System.out.println("中年人");
		}
		else if (age > 60){
			System.out.printlin("老年人");
		}
	}
}

这段代码的输出结果将是:青年人。
原因是,45>20,满足第一个条件,会执行第一个if的代码块中的语句。同时,else if(age > 40)的条件包含了age <= 20,也就是说,第二个代码块是否执行,判断的条件为:age > 40 && age<= 20,这个条件将永远不会被满足,因此不会执行相应的代码块的内容。因此上述代码应修改为:

public class demo{
	public static void main(String[] args){
		int age = 45;
		if(age > 60){
			System.out.println("老年人");
		}
		else if (age > 40){
			System.out.println("中年人");
		}
		else if (age > 20){
			System.out.printlin("青年人");
		}
	}
}

2.2 switch 语句

switch语句的完整形式如下:

switch (expression)
{
	case condition1:
	{
		statement;
		break;
	}
	case condition2:
	{
		statement;
		break;
	}
	...
	case conditionN:
	{
		statement;
		break;
	}
	default{
		statement;
	}
}

switch语句的执行逻辑为:
首先求出表达式expression的值,然后和每一个condition匹配,如果匹配成功则执行相应的代码块,如果失败则执行最终的default下面的代码块。

注意

  1. switch语句中,每个case标签最好在最后都加上一条break语句。如果不加入break语句,则会把后方所有case标签内的代码块一起执行。并且在JAVA11之后,不加入break语句,JAVA在编译时也会出现警告。
  2. switch语句后面的expression表达的数据类型只能为:byte、short、char、int、String和枚举类型(类似于一个常量)。

3.循环结构

循环语句可以让程序在满足某个循环条件的情境下,反复执行一段代码。一个循环语句包含以下4部分:

  1. 初始化语句(init_statement):用于初始化工作,在循环开始之前执行
  2. 循环条件(test_expression):布尔类型表达式,决定是否执行循环体
  3. 循环体(statement):循环语句主体,如果循环条件允许,则循环体将重复执行
  4. 迭代语句(iter_statement):用于更改循环控制变量,使得循环在合适的时候结束

3.1 while循环

while循环语法格式:

init_statement
while(test_expression){
	statment;
	iter_statment;
}

while循环执行逻辑:

  1. 初始化变量数据
  2. 计算循环条件test_expression,判断true还是false
  3. 若为false,终止循环
  4. 若为true,执行循环体statement和迭代语句iter_statement

注意:

  1. 使用while循环时,一定要保证,循环条件有变成false的时候,否则将会变成死循环。
  2. while循环条件的后面不要加分号,在JAVA中,分号代表空语句,不做任何事,如果while的循环条件后面加分号,则也会变成死循环。

3.2 do while循环

do while循环语法格式

init_statement;
do
{
	statement;
	iter_statement;
}while(test_expression);

与while不同,do while语句是先执行循环体,再判断循环条件,因此循环体至少会被执行一次。

3.3 for循环

大部分情况下,for循环可以代替while、do while循环,其基本语法格式如下:

for(init_statement;test_expression;iter_statement){
	statement;
}

for循环的执行逻辑:

  1. 执行循环初始化语句init_statement,该初始化语句只会在每次循环开始前执行一次。
  2. 计算循环条件test_expression的值,若为false,则不执行循环体,若为true则执行循环体statement。
  3. 循环体执行结束后,执行循环迭代语句iter_statement。

注意:
1.for循环中,可以指定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式,如:

public class demo{
	public static void main(String args[]){
		for(int a = 0, s = 0 , p = 0 ; a < 10 && b < 10 && c < 10;a++){
			System.out.println("循环执行")
			}
	}
}

上方代码中,初始化语句定义了三个变量,但是由于for循环只允许使用一个初始化语句,因此这三个变量的数据类型一定是相同的。

2.最好不要在循环体内修改循环变量,容易出现死循环等错误。若循环必须访问循环变量,则建议重新定义一个临时变量,将循环变量的值赋值给临时变量,对临时变量做相应处理。

3.在for循环的初始化条件中定义的变量,作用域仅在该循环内有效,for循环终止后,将无法访问这些变量。

4.无论是while、do while还是for循环,都可以嵌套,可以是两层、三层、四层…不论如何嵌套,总可以把内层循环当作外层循环的循环体来对待。

3.4 控制循环结构

JAVA提供了break和continue来控制循环结构,除此之外,return可以结束整个方法,因此也可以用来控制循环。

3.4.1 break

break用于完全结束一个循环,不管是哪种循环,一旦在循环体中遇到break,则系统将完全结束该循环,例如:

public class demo{
	public static void main(String args[]){
		for(int i = 0; i < 10 ; i ++){
			if(i = 4){
				break;	
			}
		}
	}
}

同时,break不仅可以用于结束其所在的循环,也可以结束外层循环,但是需要外层循环的标签。JAVA中的标签就是一个紧跟着英文冒号:的标识符,并且JAVA中的标签只有放在循环语句之前才有作用,例如:

public class demo{
	public static void main(String args[]){
		outer:
		for(int i = 0; i < 10; i ++){
			for (int j  = 0; j < 10; j ++){
				if(i*j == 6){
					break outer;
				}
			}
		}
	}
}

outer就是外层循环的标签,break可以直接跳出外层循环。通常来讲,break之后的标签,必须在break所在的循环的外层循环之前定义才有意义。

3.4.2 continue

continue与break不同,它只忽略本次循环剩下的语句,会继续下一次循环,并不会终止循环。同时,continue后面也可以紧跟一个标签,用以直接进行外层循环的下一次循环,例如:

public class demo{
	public static void main(String args[]){
		outer:
		for(int i = 0; i < 10; i ++){
			for (int j  = 0; j < 10; j ++){
				if(i*j == 6){
					continue outer;
				}
			}
		}
	}
}

当满足continue的条件时,会直接进行外层循环的下一次循环。

3.4.3 return

严格来说,return并非专门用于循环控制语句的,但是由于return可以结束一个方法,因此可以直接终止方法中的循环。


本文链接: http://www.dtmao.cc/news_show_200317.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?