switch语法结构:
switch (表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
上述结构中,switch中的表达式将会与case内容匹配,若相同就执行case下面的语句,如遇到break则跳出switch条件判断语句,若没有匹配到任何值,则执行default语句
需要注意的是,在switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其它类型的值,程序会报错。但上述说法并不严谨,实际上在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。
在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,要判断一周中的某一天是否为工作日,同样使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时就视为工作日,否则就视为休息日。接下来通过一个案例来实现上面描述的情况,如下所示。SwitchDemo02.java
public class SwitchDemo02 {
public static void main(String[] args) {
int week = 2;
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
System.out.println("今天是工作日");
break;
case 6:
case 7:
// 当 week 满足值 6、7 中任意一个时,处理方式相同
System.out.println("今天是休息日");
break;
}
}
}
-
数组
数组的定义格式:
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
内存状态:
数组中的三个元素初始值都为0,这是因为当数组被成功创建后,数组中元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。具体如下表所示。
数据类型 |
默认初始化值 |
byte、short、int、long |
0 |
float、double |
0.0 |
char |
一个空字符(空格),即’\u0000’ |
boolean |
false |
引用数据类型 |
null,表示变量不引用任何对象 |
静态初始化有两种方式,具体格式如下:
1、类型[] 数组名 = new 类型[]{元素,元素,……};
2、类型[] 数组名 = {元素,元素,元素,……};
数组的遍历和最值都要用到for循环:
public class ArrayDemo05 {
public static void main(String[] args) {
int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组
int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值
// 下面通过一个for循环遍历数组中的元素
for (int x = 1; x < arr.length; x++) {
System.out.println(arr[i]);
if (arr[x] > max) { // 比较 arr[x]的值是否大于max
max = arr[x]; // 条件成立,将arr[x]的值赋给max
}
}
System.out.println("max=" + max); // 打印最大值
}
}
数组异常:
- 越界异常
每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错,如下所示。ArrayDemo06.java
1 public class ArrayDemo06 {
2 public static void main(String[] args) {
3 int[] arr = new int[4]; // 定义一个长度为4的数组
4 System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
5 }
6 }
- 空指针异常
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常ArrayDemo07.java
1 public class ArrayDemo07 {
2 public static void main(String[] args) {
3 int[] arr = new int[3]; // 定义一个长度为3的数组
4 arr[0] = 5; // 为数组的第一个元素赋值
5 System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
6 arr = null; // 将变量arr置为null
7 System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
8 }
9 }
-
二维数组
二维数组格式定义:
//第一种方式:
int[][] arr = new int[3][4];
//第二种方式:
int[][] arr = new int[3][];
//第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
遍历和累加:
class ArrayDemo09 {
public static void main(String[] args){
int[][] arr = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum = 0, total = 0;
for (int i=0; i<arr.length; i++) {
for (int j=0; j<arr[i].length; j++) {
System.out.println(arr[i][j])
sum += arr[i][j];
}
System.out.println("第"+i+"组的和为:"+ sum);
total += sum;
sum = 0;
}
System.out.println("total= "+ total);
}
}
-
-
知识点总结
-
- 数组
- 它是一个用来存储同一个数据类型多个元素的一个容器(数组长度是固定的,数组中存储的元素的数据类型要求一致)
- 格式:
格式1:
数据类型[] 数组名 = new 数据类型[数组长度];
格式2:
数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,..};
格式3:
数据类型[] 数组名 = {元素值1,元素值2,..};
-
- 数组操作的常见问题:
NullPointerException: 空指针异常
ArrayIndexOutOfBoundsException: 数组越界异常
- 二维数组:
- 它是一个包含多个一维数组的数组
- 特点:二维数组中的每个元素都是一个一维数组
- 格式:
格式1:
数据类型[][] 数组名 = new 数据类型[m][n];
m: 代表二维数组中一维数组的个数
n: 代表每个一维数组中元素的个数
格式2:
数据类型[][] 数组名 = new 数据类型[m][];
m: 代表二维数组中一维数组的个数
每一个一维数组通过赋值来确定数组长度
格式3:
数据类型[][] 数组名 = {{元素值1,元素值2,..},{元素值1,元素值2,..},..};