参考资料 java数组|菜鸟教程
参考视频 狂神说Java
数组的定义
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干数据,按照一定次序排列组合
- 可通过下标来访问数组元素
数组的声明创建
- 首先应该声明数组变量才能在程序中使用数组
dataType[] arrayRefVar;
int[] nums;
dataType arrayRefVar[]; // 效果相同,但不是首选方法
int nums2[];
- 创建数组,不同于声明数组,声明数组不分配任何内存空间
nums = new int[10]; //
- 数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
int[] nums = new int[10];
- 给数组元素赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
//如果不赋值的话会有一个默认值 0
for(int i :nums){
System.out.println(nums[i]);
}
- 获取数组长度 nums.length
初始化
- 静态初始化
- 动态初始化
//静态初始化,不可改变 创建+赋值
int[] a = {1,2,3,4,5,6,7,8,9};
//动态初始化:包含默认初始化
int[] b = new int [10];
b[0] = 10;
数组的基本特点
- 长度确定
- 元素必须相同类型,不允许混合类型
- 数组的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组可以看成对象,数组中的每个对象相当于该对象的成员变量
- 数组边界
- 数组默认值 数值型基本数据类型的默认值为0,char 默认值为’\u0000’ , boolean 的为false
数组的使用
复制数组
- 使用循环语句逐个的复制数组中的元素
- 使用System类中的静态方法 arraycopy
System.arraycopy(sourceArray,srcPos,targetArray,tarPos,length)//将sourceArray中的元素全部复制到targetArray中
//srcPos表明sourceArray 的起始位置
list 2 =list 1; 不能将list1数组中的值复制到了list2,而是将list的引用值赋值给了list2。下面就说的很清楚了
数组作为函数的参数(作为引用变量)
//打印
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
数组作为函数的返回值
//反转数组
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数
- 定义
int[][] a = {{1,2},{3,4},{4,5}};
/*
1,2 a[0] 保存 1,2
3,4 a[1] 保存 3,4
5,6 a[2] 保存 5,6
*/
其实意思就是,事先不知道不规则数组的值。看第一行,表明有两个一维数组,第二三行表示第一个一维数组长度为2,第二个为3,就是这样,使用这样的语法时,必须指定第一个的下标