数组的复制与动态扩展算法
[java]
public class ArrayCopyDemo {
/**
* 数组的复制不动态扩展算法
*/
public static void main(String[] args) {
int[] ary1 = new int[] { 1, 2, 3, 4 };
// 数组的复制
int[] ary2 = ary1;// 一个数组对象,两个引用同时引用
// 相当于两个名词(数组变量ary1和ary2)同时指代一个事物,数组对象。
System.out.println(ary1[1]);
System.out.println(ary2[1]);
ary2[2] = 9;
/* 这种现象叫数组赋值,可以发现如果这样赋值,数组对象没有隔离性,丌小心就修改了 */
System.out.println(ary1[2]);
}
}
public class ArrayCopyDemo {
/**
* 数组的复制不动态扩展算法
*/
public static void main(String[] args) {
int[] ary1 = new int[] { 1, 2, 3, 4 };
// 数组的复制
int[] ary2 = ary1;// 一个数组对象,两个引用同时引用
// 相当于两个名词(数组变量ary1和ary2)同时指代一个事物,数组对象。
System.out.println(ary1[1]);
System.out.println(ary2[1]);
ary2[2] = 9;
/* 这种现象叫数组赋值,可以发现如果这样赋值,数组对象没有隔离性,丌小心就修改了 */
System.out.println(ary1[2]);
}
}我们使用数组对象的复制来实现数组的隔离性。
[java]
import java.util.Arrays;
public class ArrayCopyDemo1 {
/**
* 新数组ary3是数组ary1的副本,ary3是新数组 ary1和ary3分别指向丌同对象,内存示意图如下所示:
*/
public static void main(String[] args) {
int[] ary1 = new int[] { 1, 2, 3, 4 };
int[] ary3 = new int[ary1.length];// 空数组
for (int i = 0; i < ary1.length; i++) {
ary3[i] = ary1[i];// 将每个元素赋值一遍
}
ary3[0] = 99;
System.out.println(Arrays.toString(ary1));
System.out.println(Arrays.toString(ary3));
}
}
import java.util.Arrays;
public class ArrayCopyDemo1 {
/**
* 新数组ary3是数组ary1的副本,ary3是新数组 ary1和ary3分别指向丌同对象,内存示意图如下所示:
*/
public static void main(String[] args) {
int[] ary1 = new int[] { 1, 2, 3, 4 };
int[] ary3 = new int[ary1.length];// 空数组
for (int i = 0; i < ary1.length; i++) {
ary3[i] = ary1[i];// 将每个元素赋值一遍
}
ary3[0] = 99;
System.out.println(Arrays.toString(ary1));
System.out.println(Arrays.toString(ary3));
}
}内存图如下:
数组的扩展问题:
先明确一点,Java数组对象的大小是固定的,数组对象是丌能扩展的,我们利用数组复制的方法可以变通的实现数组扩展。创建数组副本的同时将数组长度增加就变通的实现了,数组的扩展。
System.arraycopy() 可以复制数组
Arrays.copyOf() 可以简便的创建数组副本。
Java提供的数组复制的方法
[java]
import java.util.Arrays;
public class Test {
/**
* Java提供的数组复制的方法
*/
public static void main(String[] args) {
char[] cArr = { '北', '京' };
char[] temp = Arrays.copyOf(cArr, 4);// 新数组长度为4,后两位自动赋值0
char[] cArr2 = temp;
cArr2[2] = '帅';
cArr2[3] = '哥';
System.out.println(cArr2);
//如果想看数组元素内容,以后统一使用Arrays.toString(arr)形式输出即可
}
}
import java.util.Arrays;
public class Test {
/**
* Java提供的数组复制的方法
*/
public static void main(String[] args) {
char[] cArr = { '北', '京' };
char[] temp = Arrays.copyOf(cArr, 4);// 新数组长度为4,后两位自动赋值0
char[] cArr2 = temp;
cArr2[2] = '帅';
cArr2[3] = '哥';
System.out.println(cArr2);
//如果想看数组元素内容,以后统一使用Arrays.toString(arr)形式输出即可
}
}
补充:软件开发 , Java ,