一、数组的基本概念
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);
}
}