Switch和数组
一、Switch
基本语法格式:
switch (表达式) {
case 目标值 1:
执行语句 1
break;
case 目标值 2:
执行语句 2
break;
......
case 目标值 n:
执行语句 n
break;
default:
执行语句 n+1
break;
}
需要注意的是,在 switch
语句中的表达式只能是 byte
、short
、char
、int
类型的值,传入其它类型的值,程序会报错。
但上述说法并不严谨,实际上在 JDK5.0
中引入的新特性 enum
枚举也可以作为switch
语句表达式的值,在 JDK7.0
中也引入了新特性,switch
语句可以接收一个String
类型的值。
二、数组
2.1、数组的定义
定义数组的格式:
// 数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
为了更好地理解数组的这种定义方式,可以将上面的一句代码分成两句来写,具体如下:
int[] x; // 声明一个 int[] 类型的变量
x = new int[100]; // 创建一个长度为 100 的数组
接下来,通过两张内存图来详细地说明数组在创建过程中内存的分配情况。
第一行代码 int[] x;
声明了一个变量 x
,该变量的类型为 int[]
,即一个 int
类型的数组。变量 x
会占用一块内存单元,它没有被分配初始值。内存中的状态如下图所示
第二行代码 x = new int[100];
创建了一个数组,将数组的地址赋值给变量 x
。在程序运行期间可以使用变量 x
来引用数组,这时内存中的状态会发生变化,如下图所示。
arr
保存的数据,实质上是内存中的地址
2.2、数组的默认值
当数组被成功创建后,数组中元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。具体如下表所示:
栗子🌰:
// 定义可以存储 4 个整数的数组
int[] arr = new int[4];
arr[0] = 1; // 为第 1 个元素赋值 1
arr[1] = 2; // 为第 2 个元素赋值 2
// 下面的代码是打印数组中每个元素的值
System.out.println("arr[0]=" + arr[0]);
System.out.println("arr[1]=" + arr[1]);
System.out.println("arr[2]=" + arr[2]);
System.out.println("arr[3]=" + arr[3]);
/*
运行结果:
arr[0]=1
arr[1]=2
arr[2]=0
arr[3]=0
*/
2.3、数组的静态初始化
- 在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化。
- 在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式,具体格式如下:
1、类型[] 数组名 = new 类型[]{元素,元素,……};
2、类型[] 数组名 = {元素,元素,元素,……};
栗子🌰:
int[] arr = { 1, 2, 3, 4 }; // 静态初始化
// 下面的代码是依次访问数组中的元素
System.out.println("arr[0] = " + arr[0]);
System.out.println("arr[1] = " + arr[1]);
System.out.println("arr[2] = " + arr[2]);
System.out.println("arr[3] = " + arr[3]);
/*
运行结果:
arr[0]=1
arr[1]=2
arr[2]=3
arr[3]=4
*/
需要注意的是,第 3 行代码千万不可写成int[] arr = new int[4]{1,2,3,4};
这样写编译器会报错。原因在于编译器会认为数组限定的元素个数 [4]
与实际存储的元素 {1, 2, 3, 4}
个数有可能不一致,存在一定的安全隐患
2.4、数组的遍历
栗子🌰:
public static void main(String[] args){
int[] arr = {1, 2, 3, 4, 5 ; // 定义数组
// 使用for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println( arr[ i ] ); // 通过索引访问元素
}
}
2.5、二维数组
2.5.1 二维数组的定义
- 第一种方式:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个 3 * 4 的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组
- 第二种方式:
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定 - 第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上面的二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9}
二维数组的内存图:
2.5.2、二维数组元素的访问
//定义二维数组的方式
int[][] arr = new int[3][4];
System.out.println( arr );
System.out.println("二维数组的长度: " + arr.length);
//获取二维数组的3个元素
System.out.println( arr[0] );
System.out.println( arr[1] );
System.out.println( arr[2] );
System.out.println("打印第一个一维数组的元素值");
System.out.println( arr[0][0] );
System.out.println( arr[0][1] );//访问的为二维数组中第1个一维数组的第2个元素
System.out.println( arr[0][2] );
System.out.println( arr[0][3] );
System.out.println("打印第二个一维数组的元素值");
System.out.println( arr[1][0] );
System.out.println( arr[1][1] );
System.out.println( arr[1][2] );
System.out.println( arr[1][3] );
System.out.println("打印第三个一维数组的元素值");
System.out.println( arr[2][0] );
System.out.println( arr[2][1] );
System.out.println( arr[2][2] );
System.out.println( arr[2][3] );
/*
运行结果:
二维数组的长度:3
1@530cf2
1@76fba2
1@181ed9e
打印第一个一位数组的元素值
0
0
0
0
打印第二个一位数组的元素值
0
0
0
0
打印第三个一位数组的元素值
0
0
0
0
*/
2.5.3、二维数组元素的遍历
int[][] arr = {{1,2,3},{4,5},{6,7,8}};
//外循环,遍历数组
for (int i = 0 ; i < arr.length ; i++){
//内循环,遍历每个一位数组,arr[0] arr[1] arr[2]
for (int j = 0 ; j < arr[i].length ; j++){
System.out.print( arr[i][j] );
}
}
System.out.println();
博主的所有博客目录如下:博客文章目录汇总
Java面试部分的博客目录如下:Java笔试面试目录
转载请标明出处,原文地址:https://blog.csdn.net/weixin_41835916 如果觉得本文对您有帮助,请点击顶支持一下,您的支持是我写作最大的动力,谢谢。