针对“数组在Java中的扩容的实例方法”,我们可以从以下几个方面进行讲解:
- 如何创建数组
- 数组扩容的实现原理
- 数组扩容的示例说明
一、如何创建数组
在Java中,创建一个数组可以通过以下方式来实现:
int[] array = new int[10];
上述代码中,我们声明了一个int类型的数组,且其大小为10,即创建了一个长度为10的int类型数组。
同时,Java也支持创建多维数组,例如:
int[][] twoDimensionArray = new int[3][4];
上述代码中,我们创建了一个3行4列的二维数组。
二、数组扩容的实现原理
在Java中,数组的内存分配是在创建数组时进行的,即在创建数组时系统会自动分配一定大小的存储空间。当需要向数组中添加新元素,并且已用空间不足时,Java会通过扩容来增加数组的长度。
数组扩容的实现原理如下:
- 系统会new出一个新的数组,其大小为原数组的两倍
- 将原数组中的元素复制到新数组中
- 丢弃原数组,将新数组作为操作数组
三、数组扩容的示例说明
下面通过两个示例来进一步说明数组扩容的过程。
示例一:创建并向数组中添加元素
int[] array = new int[5];
for (int i = 0; i < 10; i++) {
array[i] = i;
}
System.out.println(Arrays.toString(array));
执行上述代码后,可以得到以下输出结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Main.main(Main.java:4)
上述代码中,我们创建了一个大小为5的int类型数组,然后向其中添加了10个元素,但由于数组长度不足,程序报抛出了ArrayIndexOutOfBoundsException异常。
解决这个问题的方法是对数组进行扩容,我们可以将数组长度增加到10:
int[] array = new int[5];
for (int i = 0; i < 10; i++) {
if(i >= array.length){
// 扩容数组
int[] newArray = new int[array.length*2];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
}
array[i] = i;
}
System.out.println(Arrays.toString(array));
执行上述代码后,可以得到以下正确的输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
示例二:数组扩容后的保存信息
class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
Student[] students = new Student[1];
students[0] = new Student("Tom", 20);
System.out.println(Arrays.toString(students)); // [Student{name='Tom', age=20}]
students = Arrays.copyOf(students, 2);
students[1] = new Student("Mike", 22);
System.out.println(Arrays.toString(students)); // [Student{name='Tom', age=20}, Student{name='Mike', age=22}]
students = Arrays.copyOf(students, 3);
students[2] = new Student("Lucy", 21);
System.out.println(Arrays.toString(students)); // [Student{name='Tom', age=20}, Student{name='Mike', age=22}, Student{name='Lucy', age=21}]
}
}
上述代码中,我们定义了一个Student类,然后创建了一个长度为1的student数组并添加了一个Student对象。接着,我们通过copyOf方法对数组进行了扩容,增加到了2个元素的大小并添加了第二个Student对象。最后,我们又将数组扩容到了3个元素的大小并添加了第三个Student对象。
执行上述代码后,可以得到以下正确的输出结果:
[Student{name='Tom', age=20}]
[Student{name='Tom', age=20}, Student{name='Mike', age=22}]
[Student{name='Tom', age=20}, Student{name='Mike', age=22}, Student{name='Lucy', age=21}]
通过上述示例,我们看到了数组扩容的具体实现方法以及如何将扩容后的数组用于保存信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:数组在java中的扩容的实例方法 - Python技术站