目录
(2)数据类型[] 数组名 = new 数据类型[]{值1,值2,....};
5:Arrays.copyOfRange(数组,开始下标,结束下标)
什么是数组?
数组,引用数据类型的一种,是用来存放多个同类型数据的容器。
数组的特点
- 类型固定:每个数组只能存放多个同类型的数据,且不可改变;
- 长度固定:数组在创建之后,数组长度不可改变;
- 顺序固定:数组按照存入顺序进行排序;
- 数据可重复:在数组中可以有多个相同的数据。
数组的语法
1:声明
数据类型[]
数组名;
int[] arr;
意为定义一个数组arr,用来存放整型(int)数据。
2:创建
数组名 = new 数据类型[长度];
arr = new int[3];
意为将声明的arr创建出来,并且设置数组长度为3.
3:声明并且创建
生命创建可以写在同一步骤内,一定程度上是代码变得简洁。
(1)数据类型[]
数组名 = new 数据类型[长度];
int arr = new int[3];
声明时直接new出数组,长度在最后的中括号内标明;
(2)数据类型[]
数组名 = new 数据类型[]{值1,值2,....};
int[] arr = new int[]{50, 12, 99, 100};
与上个方法不同的是,这个方式并不需要声明数组长度,而是直接赋值,长度根据值的个数而定。
(3)数据类型[]
数组名 = {值1,值2,....};
int[] arr = {50, 12, 99, 100};
同上个方法一样,只是在上个方法基础上,省略了new 数据类型[]
这一部分
数组的属性(部分)
1:Length
Length:数组的长度,是指省略数组中元素的个数。一般使用数组名.length来获取数组长度;
2:Index
Index:数组的下标,指的是元素在数组中的位置。数组的索引从 0 开始,所以第一个元素的索引是 0,第二个元素的索引是 1,依此类推。可以使用数组的索引来访问和修改数组中的元素。
数组的读取
如果要对数组内的数据进行读取,便需要使用;数组名[index],也就是数组名后跟中括号,中括号内是数组元素的下标,下标的值必须小于数组的长度,因为下标从0开始,而长度是从1开始。
int[] arr = {50, 12, 99, 100};
int i = arr[2];
System.out.println(i);
以上代码的运行结果为:
99
因为下标是从0开始的,所以下标2是第三个数字;
但是由于数组存储的不止一个数据,我们需要根据数组的长度对数组进行遍历,也就是将数组的数据一个一个进行读取:
int[] arr = {50, 12, 99, 100};
// 遍历输出
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
以上代码的运行结果为:
50
12
99
100
上方代码便是对数组arr的遍历输出,使用for循环,定义一个整型变量 i 当作数组下标,判断 i 是否小于数组长度,如果小于,那便输出该下标的数组元素值,每次执行完毕,下标值加一,重新进行判断。直到 i 的值等于数组长度时跳出循环。
数组的存储
如果要向数组内存储数据,便需要使用;数组名[index] = 值,也就是在读取的基础上,后边跟上想存入的值,便是存储,存储和读取的差距仅在于是否被赋值。
要注意的是如果存入的下标位置本来有值,再次存入的时候,会将原来的值覆盖掉:
int[] arr = {50, 12, 99, 100};
System.out.println(arr[1]);
arr[1] = 77;
System.out.println(arr[1]);
以上代码的运行结果为:
12
77
由上可知,原有的数据会被覆盖,所以在进行赋值的时候要注意,不要出现下标错误,导致数据错误的情况。
数组常用的方法
1:Arrays.toString(数组)
将数组以拼接好的字符串返回
int[] arr = {3,4,1,5,2};
System.out.println(Arrays.toString(arr));
以上代码的运行结果为:
[3, 4, 1, 5, 2]
该方法主要是将数组内的数据以一个比较直观的方式输出,方便查看;
2:Arrays.sort(数组)
将数组进行升序排序
int[] arr = {3,4,1,5,2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
以上代码的运行结果为:
[1, 2, 3, 4, 5]
该方法主要将数组内的数据进行升序排序,然后重新存入数组内;
3:Arrays.binraySearch(数组,元素)
查找数组是否存在某个元素,存在返回下标值,不存在返回复数
int[] arr = {1, 2, 3, 4, 5};
int index1 = Arrays.binarySearch(arr,9);
int index2 = Arrays.binarySearch(arr,3);
System.out.println(index1);
System.out.println(index2);
以上代码的运行结果是
-6
2
要注意的是,想要使用这个方法,必须要先对数组进行排序,因为该方法使用的是二分查找,所以数组进行排序是必要条件;
4:Arrays.copyOf(数组,长度)
将原数组拷贝放入一个新的数组中
int[] arr = {3,4,1,5,2};
int[] arr2 = Arrays.copyOf(arr,10);
System.out.println(Arrays.toString(arr2));
以上代码的运行结果为:
[3, 4, 1, 5, 2, 0, 0, 0, 0, 0]
该方法主要将数组内的数据取出,放入另一个新定义的数组中,而新数组的长度比原数组一般都要长,空位会根据数组元素类型的不同选择不同的默认值。因为数组本身不存在扩容的功能,所以一般以这个功能达到扩容的目的,当长度小于元素组时,会截取部分数据,剩下舍弃;
5:Arrays.copyOfRange(数组,开始下标,结束下标)
将原数组的部分拷贝放入一个新的数组中
int[] arr = {1,2,3,4,5};
int[] arr2 = Arrays.copyOfRange(arr,1,3);
System.out.println(Arrays.toString(arr2));
以上代码的运行结果为:
[2, 3, 4]
该方法主要将原数组内的部分数据取出,放到另一个新定义的数组中,新定义的数组长度根据存放的数据个数决定,copyOfRange可以看作copyOf的一种特殊用法,用于复制指定范围的数组。
二维数组
什么是二维数组
在这里,二维数组只做一个简单的讲解,因为每个数组中可以存放多个同类型的数据,而数组也是引用数据的一种,所以当数组中的每个数据都是数组的时候,就是二维数组,即:数组内存放数组
创建方式
数组名 = new 数据类型[外层数组长度][里边数组长度];
取数方式
- 数组名[外层数组下标]:该方法取出的是一整个内层数组,而不是内层数组的数据
- 数组名[外层数组下标][内层数组下标]:该方法取出的是内层数组的具体数据
使用方法
方法的使用与普通数组没有区别,仅仅是需要在数组名后的中括号来确定是外层数组调用方法还是内层数组调用方法,内层数组调用方法的话需要在数组名后加下标来确定是那个内层数组需要调用,即:数组名[外层数组下标].调用的方法;
总结
在使用数组时,需要注意数组的下标范围和边界,以避免数组越界错误。此外,了解数组的常用操作和方法,能够更好地应用和处理数组。