一、数组的基本概念
1.一维数组的初始化
(1)数组的动态初始化:数组首先先开辟内存空间,然后使用索引进行内容的设置
方法一:数据类型[] 数组名称=new 数据类型[长度]
方法二:分部进行数组的实例化
注:数组在使用前一定要进行实例化(一定要new),开辟一块新的空间
(2)数组的静态初始化:数组在定义的同时进行设置
方法一(完整格式):数据类型[] 数组名称=new 数据类型[] {值,值,...}
方法二(简化模式):数据类型[] 数组名称={值,值,...}
//数组的动态初始化 //方法一 int[] arr1=new int[3]; arr1[0]=1; arr1[1]=2; arr1[2]=3; //方法二 int[] arr2=null; arr2=new int[3]; //数组的静态初始化 //方法一(完整格式) int[] arr3=new int[] {1,2,3,4,5}; //方法二(化简模式) int[] arr4={1,2,3,4,5};
2.二维数组的初始化(了解)
(1)动态初始化
数据类型[][] 数组名称=new 数据类型[行个数][列个数]
(2)静态初始化
数据类型[][] 数组名称=new 数据类型[][] {(值,值,...),(值,值,...),(值,值,...),...}
3.数组的引用传递
public class Test_60{ public static void main(String[] args) { int[] arr1=new int[3]; arr1[0]=1; arr1[1]=2; arr1[2]=3; System.out.println(arr1.length);//数组长度为3 for(int i=0;i<arr1.length;i++) { System.out.println(arr1[i]);//打印数组arr1的内容为1 2 3 } int[] arr2=null; arr2 = arr1;//发生引用传递,不需要[] arr2[2]=5;//修改数据 System.out.println(arr1[2]);//5 System.out.println(arr2[2]);//5 } }
二、数组与方法互操作
(1)方法接收数组
(2)方法返回数组
(3)方法修改数组
public class Test { //定义方法接收数组 public static void PrintArry(int[] arr1) { for(int i=0;i<arr1.length;i++) { System.out.println(arr1[i]); } } //定义方法返回数组 public static int[] GetArry() { int[] arr2=new int[] {1,2,3,4}; return arr2; } //定义方法修改数组 public static void Bigger(int[] arr3) { for(int i=0;i<arr3.length;i++) { System.out.println(arr3[i]*5); } } public static void main(String[] args) { int arr[]=GetArry(); PrintArry(arr);//1 2 3 4 Bigger(arr);//5 10 15 20 } }
三、Java支持的数组操作
1.数组排序(升序)
Java提供了一条语句自动将数组进行升序排序
java.util.Arrays.sort(数组名称)
2.数组拷贝
将一个数组的部分内容替换掉另一个数组的一部分内容
System.arraycopy(源数组名,源数组开始位置,目标数组名,目标数组开始位置,拷贝长度)
public class Test { public static void PrintArry(int[]arr) { for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } } public static void main(String[] args) { int[]arr1=new int[] {1,7,2,8,9,4}; int[]arr2=new int[] {11,77,22,88,99,44}; //数组排序 java.util.Arrays.sort(arr1);//1 2 4 7 8 9 java.util.Arrays.sort(arr2);//11 22 44 77 88 99 PrintArry(arr1); PrintArry(arr2); //数组拷贝 System.arraycopy(arr1, 1, arr2, 2, 3);//11 22 2 4 7 99 PrintArry(arr2); } }
四、对象数组
对象数组的初始化操作
(1)动态初始化
类名[] 对象数组名=new 类名[长度]
(2)静态初始化
public class Test { public static void main(String[] args) { //对象数组动态初始化 Person[]per1=new Person[2]; per1[0]=new Person("张三",1); per1[1]=new Person("李四",2); for(int i=0;i<per1.length;i++) { per1[i].GitInfo(); } //对象数组的静态初始化 Person[] per2=new Person[] {new Person("HH", 5),new Person("YYY", 6)}; for(int i=0;i<per2.length;i++) { per2[i].GitInfo(); } } } class Person { private String name; private int age; public Person(String name,int age) { this.name=name; this.age=age; } public void GitInfo() { System.out.println("姓名"+this.name+"年龄"+this.age); } }