流程控制语句结构

一、顺序结构

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

JavaSE之流程控制结构的更多相关文章

  1. scala中如何编写自定义的流程控制结构

    scala是一种函数式编程风格的语言,除了常见的if......else  ,for ,while等传统的流程控制结构,也可以自定义流程控制的控制结构. 再了解scala如何实现编写新的流程结构,我们 ...

  2. java基础(5)--流程控制结构

    流程控制结构 if结构 当关系表达式为true时,执行语句 if(关系表达式){ //语句块 } if-else结构 当关系表达式为true时,执行语句块1,否则执行语句块2 if(关系表达式){ / ...

  3. (八)MySQL事务、视图、变量、存储过程、函数、流程控制结构

    补充:增删查改语句在数据库中基本通用,但这篇博客的内容基本是MySQL区别于其它数据库管理系统的知识,也要认真学习. 一.事务 1.含义:在MySQL中,可以通过创建事务来解决一些问题. 2.语法: ...

  4. Mysql基础(十一):流程控制结构、分支结构、循环结构

    流程控制结构 说明:顺序结构:程序从上往下依次执行分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行循环结构:程序满足一定条件下,重复执行一组语句 分支结构 特点:1.if函数功能:实现 ...

  5. JavaSE基础知识(3)—流程控制结构

    一.顺序结构 1.说明 程序从上往下依次执行,中间没有任何跳转或选择2.特点 变量必须遵循 “前向引用” (局部变量必须先声明.赋值,然后再使用!) 二.分支结构(条件) 1.说明 程序从两条或多条路 ...

  6. PHP流程控制结构之分支结构

    流程控制对于任何一门编程语言来说都是具有通用与普遍性的,是程序的重要组成部分.可以这么说,在任何一门程序设计语言中,都需要支持三种基本结构:顺序结构.分支结构(选择结构或条件结构)和循环结构.对于顺序 ...

  7. Java的流程控制结构,细节详解

    位运算符 &与 |或 ^异或 <<左移 >>右移 >>>无符号右移  ~取反 注意:位运算是针对整数运算的 int i = 6,j = 10; 方式一 ...

  8. Go基础系列:流程控制结构

    条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类 ...

  9. java流程控制结构

    一.流程控制分三类 1. 顺序结构 - 程序是从上往下,从左往右执行 2. 选择结构(判断结构) - if语句 A. if(关系表达式){语句体} - 执行流程:成立就执行语句体,不成立就不执行 B. ...

随机推荐

  1. python之module 'unittest' has no attribute 'TestCase' 解决方案

    脚本报错如下:  解决方案: 这是脚本名称冲突所导致的报错,修改脚本名中重新执行,运行正常 注:脚本取名最好不要与模块和方法一致,避免不必要的冲突

  2. MySQL8多实例安装与mycat连接,最详细版本。

    [版权所有,转载请注明出处!违者必究!] 最近在搞mycat去实现主从库读写分离,所以博主就在自己的windows机器上进行了环境的搭建,在搭建MySQL多实例的时候还算顺利,就是mysql8和myc ...

  3. 0507 构造代码块和static案例,接口interface

    0507构造代码块和static案例,接口interface [重点] 1.局部变量,成员变量,静态变量的特点 2.接口 接口语法:interface A {} 接口内的成员变量[缺省属性]publi ...

  4. [安全] HTTPS的理解

    一.概述 在下面的章节,我们要搞明白以下几个问题: HTTP和HTTPS的区别,为什么要使用HTTPS HTTPS如何解决加密问题 HTTPS如何避免中间人攻击 CA证书是什么 CA证书是如何申请和颁 ...

  5. webpack-dev-server 使用 react-router 启用 browserhistory 采坑记

    问题的产生 今天下午请假,忙完手头事之后,在家实在无聊,想着从0开始搭建一个 react 的项目.webpack 基本配置之前研究过,没什么大问题.谁想,在 react-router 的配置时出现了个 ...

  6. This的关键字的使用

    this: 1.可以用来修饰属性  方法 构造器 2.this理解为当前对象或当前正在创建的对象. 3.可以在构造器中通过this()形参的方式显示的调用本类中其他重载的指定的构造器 要求: 在构造器 ...

  7. nginx 搭建图片服务器(windows 下,linux 下原理应该一样)

    作者的心声:很多知道的.用过的东西,不写下来,下次还要百度查询,浪费时间和精力,故本次写下学习笔记,方便下次查阅. 题外话:如有读者通过我这篇博客解决了工作上的难题,可以给个评论,让我一起分享你的喜悦 ...

  8. OAuth + Security -1 - 认证服务器配置

    配置 基础包依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  9. ArcCore重构-打通Can各层ID配置

    https://mp.weixin.qq.com/s/JX7VZwyMqk_9iVMm_N2pxA https://mp.weixin.qq.com/s/5Y8Dt9j1-NQmnjfYhE19dg ...

  10. 【图机器学习】cs224w Lecture 15 - 网络演变

    目录 Macroscopic Forest Fire Model Microscopic Temporal Network Temporal PageRank Mesoscopic 转自本人:http ...