Java基础系列(四)Swtich和数组

一、Switch

基本语法格式:

switch (表达式) {
	case 目标值 1:
		执行语句 1
		break;
	case 目标值 2:
		执行语句 2
		break;
	......
	case 目标值 n:
		执行语句 n
		break;
	default:
		执行语句 n+1
		break;
}

        需要注意的是,在 switch 语句中的表达式只能是 byteshortcharint 类型的值,传入其它类型的值,程序会报错。
        但上述说法并不严谨,实际上在 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 二维数组的定义

  1. 第一种方式:int[][] arr = new int[3][4];
    上面的代码相当于定义了一个 3 * 4 的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组
    这里写图片描述
  2. 第二种方式:int[][] arr = new int[3][];
    第二种方式和第一种类似,只是数组中每个元素的长度不确定
  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 如果觉得本文对您有帮助,请点击支持一下,您的支持是我写作最大的动力,谢谢。
这里写图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极星小王子

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值