流程控制语句结构

一、顺序结构

public static void main(String[] args){

    //顺序执行,根据编写的顺序,从上到下运行

    System.out.println(1);

    System.out.println(2);

    System.out.println(3);

}

二、复合语句

Java语言的复合语句是以整个块区为单位的语句,所以又称为块语句。复合语句由开括号“{”开始,闭括号“}”结束。
复合语句中的每一语句都是从上到下执行。复合语句以整个块为单位,并且在复合语句中可以嵌套复合语句。
class 类{
                 {       
                       //代码块
                 }
                方法签名{
                         //方法体
                 }
                内部类{
                       内部类体
                 }
         }
复合语句为变量创建了一个作用域。在该作用域中某个变量被创建并能够使用,如果在某个变量的作用域外使用该变量,则会发生错误。

三、分支结构

1、条件判断(if...else)

1.每个if或者else后面的{}不是必须的,但是如果没有{},默认只能带一条语句。即if或else后面的语句块只有一条语句时,可以省略{},但是可读性不够好。

2.最后的else不是必须的,可以缺省

3.当多个条件是互斥关系时,顺序无所谓

4.当多个条件是包含关系时,“小上大下/子上父下”

2、选择结构(switch...case)

  1. 语法格式
switch(表达式){

         case 常量值1:

                   语句块1;
                   break;          case 常量值2:                    语句块2;
                   break;          case 常量值3:                    语句块3;
                   break;                        ....          default:                    语句块n+1;
                  break;      
}

说明:

default的分支,可以在任意位置,只是习惯上我们写在最后,但是不管在哪里,都是先判断case的值,然后再去看default。

  1. 执行特点

要求:

(1)case后面必须是常量

(2)case后面的常量值不能重复

(3)case后面的常量值必须与switch(表达式)的类型一致或兼容

(4)switch(表达式)的类型只能是如下几种类型

         四种基本数据类型:byte,short,int,char

         两种引用数据类型:JDK1.5枚举,JDK1.7String

  1. 代码实现
/*
12 * default不是必须的,也可以不写
13 * 输出:case two
14 */
15 private static void defautTest() {
16 char ch = 'A';
17 switch (ch) {
18 case 'B':
19 System.out.println("case one");
20 break;
21 case 'A':
22 System.out.println("case two");
23 break;
24 case 'C':
25 System.out.println("case three");
26 break;
27 }
28 }
29
30 /*
31 * case语句中少写了break,编译不会报错
32 * 但是会一直执行之后所有case条件下的语句,并不再进行判断,直到default语句
33 * 下面的代码输出: case two
34 * case three
35 */
36 private static void breakTest() {
37 char ch = 'A';
38 switch (ch) {
39 case 'B':
40 System.out.println("case one");
41
42 case 'A':
43 System.out.println("case two");
44
45 case 'C':
46 System.out.println("case three");
47 default:
48 break;
49 }
50 }
51
52 /**
*switch用于判断String类型
54 * 输出:It's OK!
55 */
56 private static void stringTest() {
57 String string = new String("hello");
58 switch (string) {
59 case "hello":
60 System.out.println("It's OK!");
61 break;
62
63 default:
64 System.out.println("ERROR!");
65 break;
66 }
67 }

四、循环结构

1、for循环

  1. for循环第一种格式
	for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}

注意:

(1)循环条件必须是boolean类型

(2)如果循环条件语句②省略的话,就默认为循环条件成立

  1. for循环第二种格式

    for(int i:a)解释是:先设置一个与a数组里的元素相同的变量,这个变量先等于a数组的第一个元素,然后进入循环体,第二次循环就等于a数组的第二个元素,进入循环体,以此类推。
		int[][] dirc = {{1,0},{0,1},{-1,0},{0,-1}};

        int lengthI = dirc.length;
int lengthJ = dirc[0].length;
System.out.println(lengthI); // 4
System.out.println(lengthJ); // 2 for (int[] dire: dirc) {
int length = dire.length; // 每次从dirc[][]中取出一行元素放入dire[]中,因此length为dirc[][]的dirc.length
// dire[i] = dirc[i][]
System.out.println(length); // 2
}

2、while循环

  1. while循环语句标准格式:
while (循环条件语句①) {
   循环体语句②;
}
  1. while循环语句扩展格式:
初始化语句①;
while (循环条件语句②) {
   循环体语句③;
   迭代语句④;
}

do...while循环

  1. do...while循环标准格式:
do {
   循环体语句①;
} while (循环条件语句②);
  1. do...while循环扩展格式:
初始化语句①
do {
   循环体语句②;
   迭代语句③;
} while (循环条件语句④);
  1. 注意:

(1)while(循环条件)中循环条件必须是boolean类型

(2)do{}while();最后有一个分号

(3)do...while结构的循环体语句是至少会执行一次,这个和for和while是不一样的

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int positive = 0;
int nagetive = 0;
int num; // 注意,num = in.nextInt();不可定义在初始语句,会造成死循环
do {
System.out.println("请输入整数(0)结束:");
num = in.nextInt();
if (num > 0) {
positive++;
} else if (num < 0) {
nagetive++;
}
} while (num != 0); System.out.println(positive);
System.out.println(nagetive);
}

4、循环语句的区别

  1. 从循环次数角度分析:

do...while循环至少执行一次循环体语句

for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句

  1. 从循环变量的生命周期角度分析

for循环的循环变量在for()中声明的,在循环语句结束后,不可以被访问;

while和do...while循环的循环变量因为在外面声明的,所以while和do...while结束后可以被继续使用的;

  1. 如何选择

遍历有明显的循环次数(范围)的需求,选择for循环

遍历没有明显的循环次数(范围)的需求,循环while循环

本质上:三种循环之间是可以互相转换的,都能实现循环的功能

  1. 三种循环结构都具有四要素:

(1)循环变量的初始化表达式

(2)循环条件

(3)循环变量的修改的迭代表达式

(4)循环体语句块

5、控制语句区别

  1. break

break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。 break不仅可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟着英文冒号(:)的标识符。且它必须放在循环语句之前才有作用。

public static void main(String[] args) {
// 外层循环,outer作为标识符
outer:
for (int i = 0; i < 2; i++) {
System.out.println("外层循环第:" + i);
for (int j = 0; j < 3; j++) {
System.out.println("内层循环第:" + j);
// 跳出outer标签所标识的循环
break outer;
}
}
}
// 外层循环第:0
// 内层循环第:0
  1. continue

continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。而break则是完全中止循环。

public static void main(String[] args) {

        for (int i = 0; i < 4; i++) {
System.out.println("循环第:" + i);
if (i == 1){
         // 忽略本次循环的剩下语句
         continue;
       }
}
}
// 循环第:0
// 循环第:2
// 循环第:3
  1. return

return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。 一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

public static void main(String[] args){
    // 一个简单的for循环
    for (int i = 0; i < 3 ; i++ ){
      System.out.println("i的值是" + i);
      if (i == 1){
        return;
      }
      System.out.println("return后的输出语句");
    }
  }
  // i的值是0
// return后的输出语句
// i的值是1

部分内容参考:原文链接:https://blog.csdn.net/weixin_41043145/article/details/93780940

最新文章

  1. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署
  2. WPF入门教程系列十九——ListView示例(一)
  3. EventToCommand
  4. 安装tomcat
  5. 大话设计模式C++版——抽象工厂模式
  6. 【转】lonekight@xmu&#183;ACM/ICPC 回忆录
  7. SecondarySort 原理
  8. ASP.NET MVC DefaultModelBinder
  9. iOS self和super的区别
  10. Java RMI(远程方法调用) 实例与分析
  11. ListView装上拉电阻下拉刷新
  12. ES6——块级作用域
  13. Effective Java 第三版——12. 始终重写 toString 方法
  14. 572. Subtree of Another Tree(easy)
  15. matplotlib 中文显示问题
  16. Navicat再次激活
  17. 【MySQL】CentOS下安装及搭建主从复制
  18. php 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
  19. CF 954H Path Counting
  20. Python字符串切片

热门文章

  1. 非常实用的织梦dede所有标签调用方法大全
  2. tp5插入百万条数据处理优化
  3. Docker 入门:容器
  4. pyqt5-多线程初步
  5. 获取元素节点的子节点 &amp; 获取文本节点
  6. RabbitMQ学习笔记一
  7. 北京理工大学复试上机--2001A
  8. Chisel3 - util - RRArbiter
  9. 前端代码高亮显示解决方案: prism
  10. 【Hadoop】Hadoop的安装,本地模式、伪分布模式的配置