学习笔记:Java的流程控制与数组

1、顺序结构

编程语言中最常见的结构就是顺序结构。顺序结构就是程序从上到下逐行的执行,中间没有任何跳转和判断。
如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码先执行。这意味着:如果没有流程控制,Java方法里的语句是一个顺序执行流,从上向下依次执行每条语句。

2、分支语句

Java提供了两种常见的分支控制结构:if语句和switch语句,其中if语句使用布尔表达式或布尔值作为分支条件来进行分支控制;而switch语句则用于对多个整数值进行匹配,从而实现分支控制。

2.1 if条件语句

if语句使用布尔表达式或布尔值作为分支条件来进行分支控制。if语句有如下三种形式。
第一种形式:

     if (logic expression){
         statement...
     }

第二种形式:

     if (logic expression){
         statement...
     }else{
         statement...
     }

第三种形式:

     if (logic expression){
         statement...
     }else if (logic expression){
         statement...
     //可以有零个或多个else if语句
     ...
     //最后的else语句也可以省略
     else{
         statement...
     }

在上面的if语句的三种形式中,放在if之后括号里的只能是一个逻辑表达式,即这个表达式的返回值只能是true或false。第二种形式和第三种形式是相通的,如果第三种形式中else if块不出现,就变成了第二种形式。
在上边的条件语句中,if (logic expression)、else if (logic expression)和else后花括号括起来的多行代码被称为代码块,一个代码块通常被当成一个整体来执行(除非运行过程中遇到return、break、continue等关键字,或者遇到异常),因此这个代码块也被称为条件执行体。
当条件执行体只有一行语句时,则可以省略花括号,因为单行语句本身就是一个整体,无需用花括号来把他们定义成一个整体。但是,通常建议不要省略if、else、else if执行体后面的花括号,即使条件执行体只有一行代码,也保留花括号会有更好的可读性,而且保留花括号会减少发生错误的可能。例如如下代码:

        int b = 6;
        if (b > 3)
            //如果b大于3,则执行下面的执行体,只有一行代码作为代码块
            System.out.println("b大于3");
        else
            //否则,执行下面的执行体,只有一行代码作为代码块
            b--;
            //对于下面代码而言,他已经不再是条件执行体的一部分
            //故总会执行
            System.out.println("b不大于3");

2.2 switch分支语句

switch语句是一种比较简单明了的多选一的选择,在Java语言中,可以用switch语句将动作组织起来进行多选一。语法格式如下:

    switch(表达式){ 
    case 常量值1:
        语句块1
        break;
    ...
    case 常量值n:
        语句块2
        break;
    default:
        语句块 n+1;
        break;
    }  

switch语句中表达式的值必须是整型或字符型,常量值1~n必须也是整型或字符型。
switch语句是怎么执行的过程如下:首先switch语句先计算表达式的值,如果表达式的值与case后的常量值相同,则执行该case后的若干个语句,直到遇到break语句为止。如果没有break,则继续执行下一case中的若干语句,直到遇到break为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句可选,如果不存在default语句,而且switch语句中的表达式的值与任何case的常量值都不相同,则switch不做任何处理。并且,同一个switch语句,case的常量值必须互不相同。

3、循环结构

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。

3.1 while循环语句

while循环的语法格式如下:

    初始化语句;
    while (循环条件){
        循环体; 
        迭代语句;
    }

while循环为每次执行循环体前,先对循环条件求值,若循环条件为true,则运行循环体部分。然后执行迭代语句。实例如下。

        //循环的初始化条件
        int count = 0;
        //当count<10的时候,执行循环体
        while (count < 10){
            //循环体
            System.out.println(count);
            //迭代语句
            count++;
        }
        System.out.println("循环结束");

3.2 do…while循环语句

do…while循环与while循环的区别在:while循环语句是先判断再执行,do…while是先执行再判断,哪怕循环条件得知一开始是假,也会执行循环体,因此do…while的循环体至少执行一次。
do…while循环语句的语法格式如下。

    初始化语句;
    do
    {
        循环体; 
        迭代语句;
    }while (循环条件);

举例如下。

    //循环的初始化条件
    int count = 1;
    do{
        //循环体
        System.out.println(count);
        //迭代语句
        count++;
        //当count<10的时候,执行循环体
    }while(count < 10);
    System.out.println("循环结束"); 

3.3 for循环

for循环相比较while循环、do…while循环来说,更加简洁。
for循环的基本语法格式如下:

        for (初始化语句:循环条件:迭代语句){
            循环体;
        }

举例如下。

          //循环的初始化条件、循环条件、迭代语句都在一行
          for (int count = 0 ; count < 10 ; count++){
              System.out.println(count);
          }
        System.out.println("循环结束");

Java 5之后,Java提供了一种更为简单的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,无需根据索引来访问数组元素和集合元素,foreach自动遍历数组和每个元素。
foreach语法格式如下。

     for (循环变量类型 循环变量 : 数组名){
         循环体;
     }

举例如下。

    int array[] = {1, 2, 3};

    for (int arr : array) {
         System.out.println(arr);
    }

4、跳转语句

Java提供了3种跳转语句:break语句、continue语句、return语句。

4.1 使用break结束循环

break用于完全结束一个循环,跳出循环体。**注意是结束当前循环体。**举例如下。

        for (int i = 0 ; i < 10 ; i++){
            System.out.println("i的值是" + i);
            if (i == 3){
                //执行该语句时将结束循环
                break;

break语句也可以直接结束其外层循环,但是此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。
Java中的标签就是紧跟着英文冒号(:)的标识符。Java中的标签都放在循环语句之前才有作用。如下代码。

        //外层循环,outer作为标识符
        outer:
        for (int i = 0 ; i < 5 ; i++){
            //内层循环
            for (int j = 0 ; j < 3 ; j++){
                System.out.println("i的值为" + i + "j的值为" + j);
                if (j == 1){
                    //跳出outer标签所标识的循环
                    break;
                }
            }

注意:通常紧跟break之后的标签,必须在break所在循环的外层循环之前定义才有意义。

4.2 使用continue忽略本次循环剩下的语句

continue语句只能用于for、while、do···while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环。

        for (int i = 0 ; i < 3 ; i++){
            System.out.println("i的值为" + i);
            if (i == 1){
                //忽略本次循环的剩下语句
                continue;
            }
            System.out.println("continue后的输出语句");
        }

运行结果如下:
i的值为0
continue后的输出语句
i的值为1
i的值为2
continue后的输出语句

与break类似,continue后面也可以紧跟一个标签,用于直接跳过所标识的当次循环的剩下语句,重新开始下一次循环。标签具体用法与break相同。

4.3 使用return结束方法

return关键字的功能是结束一个方法。

      public void getName() {
          return name;
      }

例如上方代码,这是一个方法用于获取姓名,当调用这个方法时将返回姓名值。

5、数组类型

所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。
数组本身也是一种引用数据类型。

5.1 一维数组

5.1.1 定义数组

定义Java数组的语法格式有如下两种:

type[] arrayName;
type arrayName[];

对这两种格式来说,通常推荐使用第一种。因为第一种有更好的语义,并且有更好的可读性。

5.1.2 数组的初始化

  • Java语言中数组必须先开始初始化,然后才可以使用。数组的初始化有2种方式。
    1.静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
    2.动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
  • 数组只有一个名称,即标识符
  • 元素下标标明了元素在数组中的位置,从0开始。数组中的每个元素都可以通过下标来访问.举例:
    int[] array = new int[]{1, 2, 3, 4, 5},则数组的元素为array[0]、array[1] 、array[2]、array[3]、array[4]

5.1.2.1 静态初始化

方式一:

//分配长度为4个int型的内存空间,并分别赋初始值1,2,3,4,5
int[] array = new int[]{1, 2, 3, 4, 5};

方式二:

//方式一的简写
int[] array = {1, 2, 3, 45};

5.1.2.2 动态初始化

//分配长度为5的内存空间,并全部赋为默认值 0
//相当于 int[] array = new int[5]{0, 0, 0, 0} 的简写
int[] array = new int[5];

指定初始值时的规则如下。
在这里插入图片描述

5.2 二维数组

Java 语言把二维数组看成是数组的数组,不同于 C/C++ 二维数组分配的是连续内存,Java 的高维数组分配的并非是连续内存,所以不要求二维数组的每一维的大小相同。
实质上,Java 高维数组还是一维数组,只不过这个一维数组的元素比较特殊,是由低一维的数组这种引用类型的引用构成的。

5.2.1 定义方式

方式一:

//即创建了一个 3*2 的二维数组,array 里有三个数组元素
//三个数组元素都是长度为 2 的一维数组的引用
int[][] array = new int[3][2];

方式二:

int[][] array = new int[3][];
//由于二维数组相当于是一维数组这种引用类型的引用组成的
//所以此时等价于 int[][] array = {null, null, null}
//下面可以为 array 数组分别赋上长度不同的一维数组
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];

方式三:

int[][] array = {{1, 2}, {1, 2, 3}, {2}};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值