一:基本概念
1 . 数组的动态初始化
数据类型[ ] 数组名称 = new 数据类型[ 数组长度 ];
定义一个int型数组:
int[] array=new int[10];
2 . 引用传递
同一块堆空间可以被不同的栈所指向
用以下代码来看:
public class Main {
public static void main(String[] args) {
int[] array1=new int[3];
int[] array2=array1;
System.out.println(array1);
System.out.println(array2);
array2[0]=1;
for (int i = 0; i < 3; i++) {
System.out.print(array1[i]);
}
System.out.println();
for (int i = 0; i < 3; i++) {
System.out.print(array2[i]);
}
}
}
上述代码得到的结果如下图:
从输出结果可以看出,两个数组指向的是同一块堆空间。
二:java对数组的支持
1 . 实现数组排序
java.util.Arrays.sort(arrayName) ;
用代码来实现:
import static java.util.Arrays.sort;
public class Main {
public static void main(String[] args) {
int[] array=new int[]{1,3,2};
sort(array);
for (int i = 0; i < 3; i++) {
System.out.println(array[i]);
}
}
}
得到这样的结果:
2 . 实现数组拷贝
部分数组拷贝:
arraycopy(原数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度)
数组拷贝:
copyOf(原数组名称,新数组长度)
三:对象数组
1 . 动态初始化
类名称[ ] 对象数组名称 = new 类名称[ 数组长度 ] ;
实现数组对象的动态初始化:
public class Main {
public static void main(String[] args) {
Person[] person=new Person[3];
person[0]=new Person("甲",12);
person[1]=new Person("乙",26);
person[2]=new Person("丙",33);
for (int i = 0; i < 3; i++) {
System.out.println(person[i].toString());
}
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
输出结果:
2 . 静态初始化
public class Main {
public static void main(String[] args) {
Person[] person=new Person[]{
new Person("甲",12),
new Person("乙",26),
new Person("丙",33)
};
for (int i = 0; i < 3; i++) {
System.out.println(person[i].toString());
}
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}