目录
1、定义
一组连续的空间,存放的是一组相同数据类型的数据
2、初始化
// 动态初始化
数据类型[ ] 数组名称 = new 数据类型 [ ] { 初始化数据 };
例:int [ ] arr = new int [ ]{1, 2, 3};
int [ ] arr = new int [ 3 ]; //此时数组的长度为3 默认储存的值为0
// 静态初始化
数据类型 [ ] 数组名称 = { 初始化数据 };例: int [ ] arr = { 1 , 2 , 3 };
注:静态初始化的时候, 数组元素个数和初始化数据的格式是一致的.
3、简单操作
注:此部分的操作默认已初始化数组 array()
(1)输出数组长度
System.out.println(array.length);
下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常
(2)获取数据
System.out.println(array [ 0 ]); //获取0下标的数据
(3)遍历数组
-
使用 for 循环遍历
for(int i=0;i<array.length;i++){
System.out.println(array [ i ]);
}
-
使用 for each循环遍历数组
for( int val : array){ // 此处第一个参数为与数组同数据类型的变量 第二个参数为数组名
System.out.println(val);
}
-
使用操作数组的工具类 Arrays
String ret = Arrays.toString(array);
System.out.println(ret);
使用此方法时 要使用如下语句导包:
import java.util.Arrays;
(4)数组排序
Arrays.sort(array);
(5)数组填充值
-
全部填充同一值
Arrays.fill(array,99); //第一个参数为数组名,第二个参数为填充值
-
部分填充
Arrays.fill(array,3,6,99) // 第一个参数 为数组名 第二个参数为起始填充位置 第三个 为终止填充位置 第四个参数为 填充值
填充位置近似于左闭右开的区间[3,6),即就是从3下标开始填充到5下标终止
4、认识 null
int [ ] arr = null ;System . out . println ( arr [ 0 ]);// 执行结果Exception in thread "main" java . lang . NullPointerExceptionat Test . main ( Test . java : 6 )
5、数组作为方法的返回值
代码示例 : 写一个方法 , 将数组中的每个元素都 * 2
// 直接修改原数组
class Test {
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void transform(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
}
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
transform(arr);
printArray(arr);
}
}
// 返回一个新的数组
class Test {
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static int[] transform(int[] arr) {
int[] ret = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
ret[i] = arr[i] * 2;
}
return ret;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int[] output = transform(arr);
printArray(output);
}
}
6、拷贝数组
(1)数组名.clone();
int [ ] 数组名 ={ };
int reet = 数组名.clone;
(2)拷贝指定长度数组
Arrays.copyOf( int [ ] 数组名 , length);
当长度大于拷贝数组长度时补0
(3)拷贝一段数据
Arrays.copyOfRange(int [ ] 数组名,int from, int to); //from为起始位置 to为终点位置