一.数组基本概念
1.数组的初始化
- 数组动态初始化(声明并开辟数组)
//一维数组:数据类型[] 数组名 = new 数组类型[数组长度];
int[] array = new int[10];
//二维数组:数据类型[][] 数组名 = new 数组类型[行个数][列个数];
int[][] array = new int[3][4];
//一维数组
public class Test{
public static void main(String[] args) {
int[] array = new int[10];
array[0] = 1;
array[1] = 2;
array[2] = 3;
//for循环遍历数组
for(int i = 0; i<array.length; i++){
System.out.print(array[i]+" ");
}
System.out.println("\n");
//for-each循环遍历数组
for(int j:array){
System.out.print(j+" ");
}
}
}
//二维数组
public class Test{
public static void main(String[] args) {
//初始化
int[][] array = new int[3][4];
//赋值操作
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
//遍历数组
for(int i = 0; i<array.length; i++){
for(int j = 0; j<array[i].length; j++){
System.out.print(array[i][j]);
}
}
}
}
- 数组静态初始化
一维数组:
数据类型[ ] 数组名 = new 数据类型[ ]{值…};
数据类型[ ] 数组名 = {值…};
二维数组:
数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{{值…},{值…}…};
2.匿名数组
public class Test{
public static void main(String[] args) {
System.out.println(new int[]{1,2,3,4,5}.length);
}
}
二.数组与方法互操作
1.引用传递
多个栈内存指向同一个堆内存。
方法与数组的互操作:方法接受数组、方法修改数组、方法返回数组。
int[] array = new int[5];
int[] x = array; //引用传递
public class Test{
public static void main(String[] args) {
int[] array = init();
changeArray(array);
printArray(array);
}
//方法返回数组
public static int[] init(){
return new int[]{1,2,3,4,5};
}
//方法修改数组
public static void changeArray(int[] arr){
for(int i = 0; i<arr.length; i++){
arr[i] *= 5;
}
}
//方法接收数组
public static void printArray(int[] temp){
for(int i = 0; i<temp.length; i++){
System.out.print(temp[i]+" ");
}
}
}
三.Java对数组的支持
1.数组排序
只要是基本数据类型,sort()方法都能对数组进行升序排序。
java.util.Arrays.sort(数组名称);
2.数组部分拷贝
System.arraycopy(源数组名,源数组开始点,目标数组名,目标数组开始点,拷贝长度);
3.数组全拷贝
java.util.Arrays.copyOf(原数组名称,新数组长度)
int[] newArray= Arrays.copyOf(array, 10);
四.对象数组
以引用数据类型定义的的数组,如类、接口。
类名称[] 对象数组名称 = new 类名称[长度];