1、流程控制语句switch
2、数组
3、随机点名器案例
01switch语句解构
* A:switch语句解构
* a:switch只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。
1 | * b:格式如下: |
1 | * c: 执行流程: 表达式,和case后面的常量进行比较和哪个case后的常量相同,就执行哪个case后面的程序,遇到break,就全结束 |
02switch语句的星期判断
* A: switch语句的星期判断
1 | * a: 明确需求 |
03switch语句接受的数据类型
* A: switch语句接受的数据类型
* a:注意事项
switch语句中的表达式的数据类型,是有要求的
JDK1.0 - 1.4 数据类型接受 byte short int char
JDK1.5 数据类型接受 byte short int char enum(枚举)
JDK1.7 数据类型接受 byte short int char enum(枚举), String
04case穿透
* A:case穿透
1 | * a: 在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。 |
05数组的概述
* A: 数组的概述
* a:数组的需求
现在需要统计某公司员工的工资情况,例如计算平均工资、最高工资等。假设该公司有50名员工,用前面所学的知识完成,
那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻烦.
* b:数组的概述
数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。
06数组的定义
* A:数组的定义
1 | * b:格式: |
07JVM内存划分
* A:内存划分
* JVM对自己的内存划分为5个区域
* a: 寄存器:内存和CUP之间
* b: 本地方法栈: JVM调用了系统中的功能
* c: 方法和数据共享: 运行时期class文件进入的地方
* d: 方法栈:所有的方法运行的时候进入内存
* e: 堆:存储的是容器和对象
08数组的内存
1 | * A: 数组的内存 |
09使用索引访问数组的元素
* A: 使用索引访问数组的元素
* 组中有100个元素,初始值都为0。数组中的每个元素都有一个索引(也可称为角标),要想访问数组中的元素可以通过“x[0]、x[1]、……、x[98]、x[99]”的形式。
* 需要注意的是,数组中最小的索引是0,最大的索引是“数组的长度-1”
10数组的length属性
* A: lenth属性
1 | * a 在Java中,为了方便我们获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。 |
11为数组的元素赋值
* A: 为数组的元素赋值
* a: 如果在使用数组时,不想使用这些默认初始值,也可以显式地为这些元素赋值。
* 赋值过的元素已经变为新的数值,没有赋值的元素默认初始化的数值
* b: 案例
1 | public class ArrayDemo02 { |
12数组的定义_2
* A: 定义数组格式2
1 | * a: 数组初始化 |
如果希望将一个数组的所有值拷贝到一个新的数组中去,
就要使用 Arrays 类的 copyOf方法:
1 | int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length) ; |
如果数组元素是数值型,那么多余的元素将被赋值为 0 ; 如果数组元素是布尔型, 则将赋值
为 false。相反, 如果长度小于原始数组的长度,则只拷贝最前面的数据元素。
13遍历数组
* A:遍历数组
* 在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历
* B:练习
1 | public class ArrayDemo04 { |
提示:有个更加简单的方式打印数组中的所有值, 即利用 Arrays 类的 toString 方法。 调用 Arrays.toString(a), 返回一个包含数组元素的字符串, 这些元素被放置在括号内, 并用逗号分隔, 例如,“ [2, 3, 5,7,11 ,13]”、 要想打印数组, 可以调用
System.out.println(Arrays.toString(a));
14数组中常见的异常
* A: 数组操作中,常见的两个异常
数组的索引越界异常
空指针异常
* B: 练习
1 | public class ArrayDemo_4{ |
15数组最值和排序
* A: 数组获取最值的原理思想
* 定义数组的第一个元素arr[0]为最大值;循环arr数组,判断如果有比arr[0] 大的就交换,直到arr数组遍历完毕,那么arr[0]中就保存了最大的元素
* B: 数组排序
* 要想对数值型数组进行排序, 可以使用 Arrays 类中的 sort 方法:
int[] a = new int[10000];
Arrays.sort(a)
16数组获取最值代码实现
* A: 代码实现
1 | public class ArrayDemo05 { |
17二维数组的定义
* A 二维数组的作用
* 要统计一个学校各个班级学生的考试成绩,又该如何实现呢?
* 这时就需要用到多维数组,多维数组可以简单地理解为在数组中嵌套数组。
* B 定义格式
1 | * a 第一种定义格式: |
18二维数组元素的访问
* A: 二维数组的访问
* 案例:
1 | class ArrayDemo08 { |
19二维数组内存图
* A: 二维数组内存图
* 举例:int[][] arr = new int[3][2];
* 外层数组长在内存开辟连续的3个大的内存空间,每一个内存空间都对应的有地址值
* 每一个大内存空间里又开辟连续的两个小的内存空间.
20二维数组的定义和访问
1 | * A: 二维数组的定义和访问 |
21二维数组的遍历
* A:二维数组遍历
1 | int[][] arr = {{1,2,4},{4,7},{0,9,3}}; |
* C:二维数组累加求和
1 | class ArrayDemo09 { |
for each 循环语句不能自动处理二维数组的每一个元素。它是按照行, 也就是一维数组处理的要想访问二维教组 a 的所有元素, 需要使用两个嵌套的循环, 如下所示:
1 | for (double [] row : a) |
提示: 要想快速地打印一个二维数组的数据元素列表, 可以调用:
System.out.println(Arrays.deepToString(a)) ;
输出格式为:
[[16, B, 2, 13], [5, 10, 11, 8], [9, 6, 7, 12], [4, 15, 14, 1]]
22二维数组的求和练习
* A 例如要统计一个公司三个销售小组中每个小组的总销售额以及整个公司的销售额。如下所示
* 第一小组销售额为{11, 12}万元
* 第二小组销售额为{21, 22, 23}万元
* 第三小组销售额为{31, 32, 33, 34}万元。
* B 代码实现
1 | public class ArrayDemo10 { |
23随机点名器案例分析
* A 随机点名器案例分析
* B: 需求
* 随机点名器,即在全班同学中随机的打印出一名同学名字。
* C:分析:
* 1)定义数组存数全班同学
* 2)生成随机数范围0 到 数组长度-1
* 3)根据这个索引找到数组中的同学名称
24随机点名器代码实现
* A: 分析
随机点名器:
1 存储姓名
2. 预览所有人的姓名
3. 随机出一个人的姓名
* B 代码实现
1 | import java.util.Random; |
25随机点名器代码实现_2
* A 代码优化:
1 | import java.util.Random; |