「java二维数组的拷贝」java 二维数组复制
今天给各位分享java二维数组的拷贝的知识,其中也会对java 二维数组复制进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java函数形式实现二维数组拷贝
- 2、JAVA二维数组如何使用arraycopy?
- 3、java二维数组的复制
- 4、java中二维数组怎么复制
- 5、请问java中深度copy一个二维数组是什么意思?怎么用代码实现?
java函数形式实现二维数组拷贝
copyArray(a){
int[][] b;
for(int i=0 ;ia.length;i++){
for(int j=0;ja[i].length;j++){
b[i][j]=a[i][j];
}
}
return b;
}
你的第二个问题我没看很明白,不知道你在说什么。
JAVA二维数组如何使用arraycopy?
arraycopy
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
只能复制一维数组
java二维数组的复制
package Test;
public class TestArray {
public static void main(String[] args) {
String[][] arrString = {{"1", "2", "3"}, {"4", "5"}, {"6"}, {"7", "8", "9", "10"}};
System.out.println("original array:");
String[][] copyTo = new String[arrString.length][];
for (int i = 0; i arrString.length; i++) {
String[] arrRow = new String[arrString[i].length];
for (int j = 0; j arrString[i].length; j++) {
System.out.print(arrString[i][j] + " ");
arrRow[j] = arrString[i][j];
}
copyTo[i] = arrRow;
System.out.println();
}
System.out.println("copy result array:");
for (int i = 0; i copyTo.length; i++) {
for (int j = 0; j copyTo[i].length; j++) {
System.out.print(copyTo[i][j] + " ");
}
System.out.println();
}
}
}
运行结果:
original array:
1 2 3
4 5
6
7 8 9 10
copy target array:
1 2 3
4 5
6
7 8 9 10
java中二维数组怎么复制
/** * @Title: ArrayCopy.java * @Package com.dusd.coding * @Description: TODO * @author Administrator * @date 2015-6-29 上午9:26:11 * @version V1.0 */package com.dusd.coding; /** * @ClassName: ArrayCopy * @Description: TODO * @author Administrator * @date 2015-6-29 上午9:26:11 * 备注: */public class ArrayCopy { /** * @Title: main * @Description: TODO * @author dusd * @date 2015-6-29 上午9:26:12 * @param args * @throws */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayCopy arrayCopy = new ArrayCopy(); String[][] strArray=new String[][]{ {"a","b","c"}, {"A","B","C","D"}, {"1","2"} }; String[][] copyArray = arrayCopy.copyArray2(strArray); ArrayCopy.printArray(copyArray); } //打印数组 public static void printArray(String[][] array){ for(int i=0;iarray.length;i++){ for(int j=0;jarray[i].length;j++){ System.out.print(array[i][j]+" "); } System.out.println(); } } //使用循环语句遍历复制 public String[][] copyArray1(String[][] array){ String[][] copyArray=new String[array.length][]; for(int i=0;iarray.length;i++){ copyArray[i]=new String[array[i].length]; for(int j=0;jarray[i].length;j++){ copyArray[i][j]=array[i][j]; } } return copyArray; } //使用java.lang.System.arraycopy()方法复制(推荐使用) public String[][] copyArray2(String[][] array){ String[][] copyArray=new String[array.length][]; for(int i=0;iarray.length;i++){ copyArray[i]=new String[array[i].length]; System.arraycopy(array[i], 0, array[i], 0, copyArray[i].length); } return array; }}
请问java中深度copy一个二维数组是什么意思?怎么用代码实现?
一个二维数组可以看成一个一维数组,每个元素存储一个一维数组首地址的引用,这个没问题吧!
也就是说对于a[][],直接用b[][]=a,或者b[][]=a.clone() 都只是复制了一个引用(包括上面的arraycopy等方法),无法保证数据独立性,就是说a数组值改变会影响到b,反之亦然,这就是浅层复制。
如果二维数组存放类型为基本类型,则只需要b的每一行进行复制(Object.clone()可以保证对基本类型做深层复制api上有写):
b[][]=a.clone();//先利用浅层复制分配新的引用存放地址
for(int i=0;ia.length;i++){
b[i]=a[i].clone();//a[i]指向数组的内容为基本类型,可以深层复制生成新引用对象
}
如果二维数组表示的是引用类型,则要对每一个元素调用clone(),并且保证所表示的引用类型遵循clone()复写原则。
b[][]=a.clone();//先利用浅层复制分配新的引用存放地址
for(int i=0;ia.length;i++){
for(int j=0;ja[0].length;j++){
b[i][j]=a[i][j].clone()//为每个元素进行深层复制
}
}
以上是规范写法,实现方法有很多,但一定要记住,单纯的对引用的COPY是没有意义的,编程中要避免。
关于java二维数组的拷贝和java 二维数组复制的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。