零基础Java:第五讲(程序流程控制、一维数组、多维数组、数组中常见算法)

164 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

程序流程控制

  • 程序流程控制

    • 可以嵌套使用
    • 顺序结构

      • 程序从上往下逐行执行,中间没有任何判断或跳转
      • 定义成员变量时采用合法的向前引用
    • 分支结构

      • 根据条件,选择性地执行某段代码;
      • 有if......else和switch两种分支语句。

        • switch(表达式)中表达式的返回值必须是下述几种类型之一:byte、short、char、int、枚举、String;
        • case句子中的值必须是常量,且所有case子句中的值应是不同的;
        • default子句是可选的,当没有匹配的case时,执行dedault;
        • break语句用来执行完一个case分支后使程序跳出switch语句块,如果没有break,程序会顺序执行到switch结尾。
      • if和switch对比(当不知道使用if或者switch时可都是用if)

        • 如果判断的具体数值不多,而且符合byte、short、int、char四种类型,switch效率更高。
        • 其他情况:对区间判断,对结果为boolean类型判断,使用if。
    • 循环结构

      • 根据循环条件,重复性执行某循环语句;
      • 循环语句的四个组成部分

        • 初始化部分
        • 循环条件部分
        • 循环体部分
        • 迭代部分
      • for循环语句、while循环语句、do……while循环语句

        • 注意:嵌套循环最好是外层循环次数小于内层循环次数
      • 特殊流程控制语句

        • break语句:终止当前所在的整个循环,
        • continue语句:结束当前所在循环的这一次执行,直接进入下次循环,并不是直接跳出此循环
        • return语句:结束整个方法
        • 注:break只能用于switch语句和循环语句,continue只能用于循环语句,continue是终止本次循环,break是终止本层循环,break和continue之后不能有其他语句,因为永远不会执行。
      • 注:JDK1.5之后提供了foreach循环,方便遍历集合、数组元素。

一维数组

  • 一维数组

    • 声明:type var[]或type[] var;
    • 初始化

      • 动态初始化:数组声明且为数组元素分配空间与赋值操作分开进行。例如:int[] arr=new int[2];arr[0]=1;arr[1]=2;
      • 静态初始化:在定义数组的同时就为数组元素分配空间并赋值。例如:int[] arr=new int[]{1,2}。
    • 引用:

      • 数组名【数组元素下标】
      • 每个数组都有一个属性length指明长度,例如:a.length指明数组a的长度(元素个数)。数组一旦初始化,其长度是不可变的。
    • 使用动态初始化的时候,数组元素会有默认值,数字类型的默认值是0,对象的默认类型是null。

多维数组

  • 多维数组

    • 初始化

      • 动态初始化:int[][] arr=new int[3][2];或者int[][] arr=new int[3][]; int[][] arr=new int[][2];错误
      • 静态初始化:int[][] arr=new int[][]{{1,2,3},{1,1,1}};
      • 特殊写法:int[] x,y[];x是一个一维数组,y是一个 二位数组
    • 练习二维数组求和
    • 练习概念

数组中涉及的常见算法

  • 数组中涉及的常见算法

    • 求数组元素的最大值、最小值、总和、平均数
    • 数组的复制、反转
    • 数组元素的排序

      • 插入排序

        • 直接插入排序、折半插入排序、shell排序
      • 交换排序

        • 冒泡排序、快速排序(或分区交换排序)
      • 选择排序

        • 简单选择排序、堆排序
      • 归并排序
      • 基数排序
  • 数组操作常见问题

    • 数组下标越界异常(ArrayIndexOutOfBoundsException) int[] arr=new int[2]; ​System.out.println(arr[2]); ​访问到了数组中的不存在的脚标时发生
    • 空指针异常(NullPointerException) int[] arr=null; System.out.println(arr[0]); arr引用没有指向实体,却在操作实体中的元素时
  • 作业