数组

本文详细介绍了Java中一维数组和二维数组的使用方法,包括数组的声明、初始化、元素访问、遍历及工具类Arrays的常用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arrays 工具类

equals(int[] a,int[] b)判断两个数组是否相等
toString(int[] a)输出数组信息
fill(int[] a,int vall)将指定的值填充到数组中
sort(int[] a)对数组进行排序
binarySearch(int[] a,int key)二分法查找值

使用工具类要注意导包

public class Test {
	public static void main(String[] args) {
		int[] a = new int[]{1,4,3};
		int[] b = new int[]{1,3,4};
		//判断两个数组是否相等
		boolean i = Arrays.equals(a,b);
		System.out.println(i);
		
		//输出数组信息
		System.out.println(Arrays.toString(a));
		
		//将指定的值填充到数组中
		Arrays.fill(b,10);
		System.out.println(Arrays.toString(b));
		
		//对数组进行排序
		Arrays.sort(a);
		System.out.println(Arrays.toString(a));
		
		//二分法查找值
		int[] c = new int[]{-98,-34,0,23,67,89};
		int index = Arrays.binarySearch(c,-34);
		System.out.println(index);
	}
}

输出结果如下:
在这里插入图片描述

一维数组

数组属于引用数据类型,创建数组对象会在堆内存汇总开辟一连串的空间

数组的长度一旦确定,就不可以修改

1、一维数组的声明和初始化

对于基本数据类型int的初始化操作如下

	int num;     //声明
	num = 10;    //初始化值
	int i = 38;  //声明+初始化

数组的初始化分为静态初始化和动态初始化

	int[] id;      //声明
	id = new int[]{12,23,34,45};     //静态初始化
	String[] name = new String[3];   //动态初始化

不管是静态还是动态,只要初始化完成,数组的长度就确定了

规定数组长度和规定数组具体值不可以放在一个语句里!!!

不可以 new int[5]{1,2,3,4,5};

2、调用数组指定位置的元素

根据索引完成

	String[] name = new String[3];
	name[0] = "草莓";
	name[1] = "西瓜";
	name[2] = "樱桃";
	
	//若有以下代码会报错
	//name[3] = "错误";

索引超过数组的长度,会报错:ArrayIndexOutOfBoundsException

3、获取数组的长度

通过数组内的length属性

	System.out.println(name.length);   //3
	System.out.println(id.length);     //4

4、遍历数组

通过使用数组长度,和读取数组元素

	for(int i = 0;i < name.length,i ++){
		System.out.println(name[i]);
	}

5、数组元素的默认初始化值

数组元素的默认初始化值就是元素所属的数据类型的默认初始化值

	int[] t = new[4];
	for(int i = 0;i < t.length,i ++){
		System.out.println(name[i]);
	}

输出结果是0 0 0 0

6、数组的内存解析

	int[] arr = new int[]{1,2,3};
	String[] s = new String[3];
	s[1] = "草莓";
	s[2] = "西瓜";

内存图如下:
在这里插入图片描述

二维数组

二维数组就是指数组中的元素是一维数组,即数组中的元素是一维数组的内存地址值,然后指向一维数组

1、声明和初始化

	//静态初始化
	int[][] arr = new int[][]{{1,2},{3,4,5},{6,7}};
	
	//动态初始化
	//指定外部有3行,内部固定2列,指定内部一维数组的元素个数为2
	int[][] arr1 = new int[3][2]; 
	//指定外部有4行,不指定内部一维数组的元素个数
	int[][] arr2 = new int[4][];

注意有以下的省略写法,仅在静态初始化中使用

	int[] i ={1,2,3};
	int[][] ii = {{45,67},{24,5,2}};
	
	//分成两行就会报错
	//int[] i;
	//i = {1,2,3};

还可以有以下写法,但是不推荐

	int[] arr[] = new int[3][];
	int arr1[] = new int[2];

2、调用数组指定位置的元素

若未指定内部元素一维数组的值,则输出默认值

	int[][] i = new int[][]{{10,11,12},{98,99},{55,56,57}};
	System.out.println(i[1][1]);   //第二行第二列  99
	System.out.println(i[0][1]);   //第一行第二列  11
	
	int[][] ii = new int[2][3];
	System.out.println(ii[1][2]); //第二行第三列,默认值  0

注意未指定内部一维数组的个数的情况,强行访问会报空指针异常
NullPointerException

	int[][] a = new int[2][];
	//报错:NullPointerException
	//System.out.println(a[1][2]);
	a[1] = new int[3];
	System.out.println(a[1][2]);  //默认值  0

3、获取数组的长度

二维数组的长度是指里面所拥有的元素的个数,即里面所存放的一维数组的内存地址值的个数

因为二维数组里面存放的是一维数组,所以同时还可以访问里面元素的长度

	int[][] i = new int[4][10];
	System.out.println(i.length);     //4
	System.out.println(i[2].length);  //10

4、遍历数组

因为二维数组里面有一维数组,所以遍历需要双重循环

	int[][] a = new int[][]{{10,11,12},{98,99},{55,56,57}};
	
	for(int i = 0;i < a.length; i ++){
		for(int j =0;j < a[i].length; j ++){
			System.out.print(a[i][j] + " ");
		}
		System.out.println();
	}

5、数组元素的默认初始化值

因为二维数组里面所存放的是一维数组的内存地址值

所以默认初始化值就是地址值

	int[][] i = new int[5][6];
	System.out.println(i[2]);    //数组对象的默认值  地址值
	System.out.println(i[2][4]); //int的默认值       0

注意:若初始化时没有规定内部一维数组的长度,则没有初始化值

	int[][] a = new int[2][];
	//报错:NullPointerException
	//System.out.println(a[1][2]);
	a[1] = new int[3];
	System.out.println(a[1][2]);  //默认值  0

6、数组的内存解析

	int[][] arr = new int[4][];
	arr[1] = new int[]{1,2,3};
	arr[2] = new int[4];
	arr[2][1] = 30;

内存图如下:

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值