? ?- 是一种数据类型(引用类型)
? ?- 相同数据类型元素的集合
? ?- 定义:
? ?- 初始化:给数组中的元素做初始化
? ?- 访问:访问的是数组中的元素
? ?- 通过(数组名.length)可以获取数组的长度(元素的个数)
? ?- 通过下标/索引来访问数组中的元素
? ? ? ?下标从0开始,最大到(数组的长度-1)
? ?- 遍历/迭代:从头到尾挨个走一遍
? ? ? ? 数组是一种数据结构,用于存储相同类型的多个元素。它可以存储基本数据类型(如int、float、boolean等)和引用数据类型(如对象)。
? ? ? ?数组的定义包括以下几个部分:
? ? ? ? ?以下是定义数组的几种方式:
数据类型[] 数组名 = {元素1, 元素2, ...};
例如: int[] numbers = {1, 2, 3, 4, 5};
数据类型[] 数组名 = new 数据类型[数组大小];
例如: int[] numbers = new int[5];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;
? ? ? ? ? 无论是静态初始化还是动态初始化,数组的元素可以通过索引访问和修改,索引从0开始,直到数组的大小减1。例如,通过numbers[0]
可以访问数组numbers
的第一个元素。
? ? ???- System.arraycopy(a,1,b,0,4);
? ?
? ?//数组的复制:
? ? ? ?int[] a = {10,20,30,40,50};
? ? ? ?int[] b = new int[6]; //0,0,0,0,0,0
? ? ? ?//a:源数组
? ? ? ?//1:源数组的起始下标
? ? ? ?//b:目标数组
? ? ? ?//0:目标数组的起始下标
? ? ? ?//4:要复制的元素个数
? ? ? ?System.arraycopy(a,1,b,0,4); //灵活性好
? ? ? ?for(int i=0;i<b.length;i++){
? ? ? ? ? ?System.out.println(b[i]);
? ? ? ?}
? ?
? ?
? ? //?- int[ ] b = Arrays.copyOf(a,6);
? ?
? ?
? ? ? ?//常规复制
? ? ? ?int[] a = {10,20,30,40,50};
? ? ? ?//a:源数组
? ? ? ?//b:目标数组
? ? ? ?//6:目标数组的长度(元素个数)
? ? ? ?//---若目标数组长度>源数组长度,则末尾补默认值
? ? ? ?//---若目标数组长度<源数组长度,则将末尾的截掉
? ? ? ?int[] b = Arrays.copyOf(a,6); //灵活性差
? ? ? ?for(int i=0;i<b.length;i++){
? ? ? ? ? ?System.out.println(b[i]);
? ? ? ?}
? ? ? int[] a = {10,20,30,40,50};
? ? ? ?//数组扩容(创建了一个更大的新的数组,并将源数组数据复制进去了)
? ? ? ?a = Arrays.copyOf(a,a.length+1);
? ? ? ?for(int i=0;i<a.length;i++){
? ? ? ? ? ?System.out.println(a[i]);
? ? ? ?}
? ? ? ? - 综合案例:
? ?//求数组元素的最大值,并将最大值放在数组最后一个元素的下一个位置
? ? ? ?public class MaxOfArray {
? ? ? ? ? ?public static void main(String[] args) {
? ? ? ? ? ? ? ?int[] arr = new int[10];
? ? ? ? ? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? ? ?arr[i] = (int)(Math.random()*100);
? ? ? ? ? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ? ? ? ? ?}
? ? ? ?
? ? ? ? ? ? ? ?int max = arr[0]; //假设第1个元素为最大值
? ? ? ? ? ? ? ?for(int i=1;i<arr.length;i++){ //遍历剩余元素
? ? ? ? ? ? ? ? ? ?if(arr[i]>max){ //若剩余元素大于max
? ? ? ? ? ? ? ? ? ? ? ?max = arr[i]; //则修改max为较大的
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?System.out.println("最大值为:"+max);
? ? ? ?
? ? ? ? ? ? ? ?arr = Arrays.copyOf(arr,arr.length+1); //扩容
? ? ? ? ? ? ? ?arr[arr.length-1] = max; //将最大值max赋值给arr中的最后一个元素
? ? ? ? ? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ? ?- Arrays.sort(arr); //升序排列(从小到大)
? ? ?//8)数组的排序:
? ? ? ?int[] arr = new int[10];
? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ?arr[i] = (int)(Math.random()*100);
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}
? ? ? ?
? ? ? ?Arrays.sort(arr); //对arr进行升序排列
? ? ? ?
? ? ? ?System.out.println("数组排序后的数据:");
? ? ? ?for(int i=0;i<arr.length;i++){
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}
? ? ? ?
? ? ? ?System.out.println("倒序输出:");
? ? ? ?for(int i=arr.length-1;i>=0;i--){
? ? ? ? ? ?System.out.println(arr[i]);
? ? ? ?}
? ? ?数组是一种用来存储相同类型元素的集合,它是一种引用类型。数组在内存中是连续分配的,可以通过索引值访问数组中的元素。
int[] array1; // 声明一个整型数组
array1 = new int[5]; // 初始化数组,指定长度为5
int[] array2 = {1, 2, 3, 4, 5}; // 声明并初始化数组,指定具体值
int[] array3 = new int[]{6, 7, 8, 9, 10}; // 声明并初始化数组,指定具体值,可以省略数组长度
int firstElement = array2[0]; // 访问第一个元素,值为1
int lastElement = array3[array3.length - 1]; // 访问最后一个元素,值为10
length
属性获取数组的长度:int length = array1.length; // 数组长度为5
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
for (int element : array3) {
System.out.println(element);
}
int[][] twoDimensionalArray = {{1, 2, 3}, {4, 5, 6}}; // 声明并初始化二维数组
int element = twoDimensionalArray[0][1]; // 访问二维数组中的元素,值为2
System.arraycopy()
方法和Arrays.copyOf()
方法,用于对数组进行拷贝:int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray1 = new int[5];
System.arraycopy(sourceArray, 0, targetArray1, 0, sourceArray.length);
int[] targetArray2 = Arrays.copyOf(sourceArray, 5);