java.lang.System的静态方法arraycopy()可以实现数组的复制。

java其实没有二维数组的概念,平常实现的二维数组只是元素是一维数组的一维数组,而数组也是引用类型,继承自Object类。数组是new出来的。这些性质也就导致arraycopy()二维数组时出现的问题。如果是复制一个一位数组,那么改变复制后的数组并不影响原数组。但是如果复制一个二维数组,那么改变其中任何一个数组,那么另一个的值也发生了变化。

如果是一维数组,那么元素都是基础类型(如int,double等),使用arraycopy()方法后,是把原数组的值传给了新数组,属于值传递。而如果是二维数组,数组的第一维装的是一个一维数组的引用,第二维里是元素数值。对二维数组应用arraycopy()方法后,第一维的引用被复制给新数组的第一维,也就是两个数组的第一维都指向相同的“那些数组”。而这时改变其中任何一个数组的元素的值,其实都修改了“那些数组”的元素的值,所以原数组和新数组的元素值都一样了。



java复制二级菜单主键重复 java 复制二维数组_System


1. public class
2.   
3. /**
4. * @param args
5. */
6. public static void
7. // TODO 自动生成方法存根
8.     
9. "中国","山西","太原","TYUT","zyy","加拿大","不知道哪个州","不知道哪个市","不知道哪个学校","yxf"};  
10. new String[10];  
11. 0, s2, 0, 10);  
12. 6] = "假设蒙大拿州";  
13. 7] = "假设蒙特利尔市";  
14. 8] = "假设Montreal商学院";  
15.     
16. "This is s1");  
17. for(int i = 0;i < s1.length ;i++){  
18. ",");  
19.    }  
20.     
21. "\nThis is s2");  
22. for(int i = 0;i < s2.length ;i++){  
23. ",");  
24.    }  
25.     
26. "中国","山西","太原","TYUT","zyy"},{"加拿大","不知道哪个州","不知道哪个市","不知道哪个学校","yxf"}};  
27. new String[s3.length][s3[0].length];  
28. 0, s4, 0, s3.length);  
29.     
30. "\nThis is original s3");  
31. for(int i = 0;i < s3.length ;i++){  
32. for(int j = 0; j< s3[0].length ;j++){  
33. ",");  
34.     }  
35.    }  
36.     
37. 1][1] = "假设蒙大拿州";  
38. 1][2] = "假设蒙特利尔市";  
39. 1][3] = "假设Montreal商学院";  
40.     
41. "\nThis is s3 after s4 has changed.");  
42. for(int i = 0;i < s3.length ;i++){  
43. for(int j = 0; j< s3[0].length ;j++){  
44. ",");  
45.     }  
46.    }  
47.     
48. "\nThis is s4");  
49. for(int i = 0;i < s4.length ;i++){  
50. for(int j = 0; j < s4[0].length ; j++){  
51. ",");  
52.     }  
53.         
54.    }  
55. }  
56.   
57. }



结果: 



This is s1 


中国,山西,太原,TYUT,zyy,加拿大,不知道哪个州,不知道哪个市,不知道哪个学校,yxf, 


This is s2 


中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf, 


This is original s3 


中国,山西,太原,TYUT,zyy,加拿大,不知道哪个州,不知道哪个市,不知道哪个学校,yxf, 


This is s3 after s4 has changed. 


中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf, 


This is s4 


中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf, 

java复制二级菜单主键重复 java 复制二维数组_System


1. 01.public static void
2. 02.                             int
3. 03.                             Object dest,       
4. 04.                             int
5. 05.                             int
6. 06.    从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1




java复制二级菜单主键重复 java 复制二维数组_System



    1. public class
    2.   
    3. /**
    4. * @param args
    5. */
    6. public static void
    7. // TODO 自动生成方法存根
    8.     
    9. "中国","山西","太原","TYUT","zyy","加拿大","不知道哪个州","不知道哪个市","不知道哪个学校","yxf"};  
    10. new String[10];  
    11. 0, s2, 0, 10);  
    12. 6] = "假设蒙大拿州";  
    13. 7] = "假设蒙特利尔市";  
    14. 8] = "假设Montreal商学院";  
    15.     
    16. "This is s1");  
    17. for(int i = 0;i < s1.length ;i++){  
    18. ",");  
    19.    }  
    20.     
    21. "\nThis is s2");  
    22. for(int i = 0;i < s2.length ;i++){  
    23. ",");  
    24.    }  
    25.     
    26. "中国","山西","太原","TYUT","zyy"},{"加拿大","不知道哪个州","不知道哪个市","不知道哪个学校","yxf"}};  
    27. new String[s3.length][s3[0].length];  
    28. 0, s4, 0, s3.length);  
    29.     
    30. "\nThis is original s3");  
    31. for(int i = 0;i < s3.length ;i++){  
    32. for(int j = 0; j< s3[0].length ;j++){  
    33. ",");  
    34.     }  
    35.    }  
    36.     
    37. 1][1] = "假设蒙大拿州";  
    38. 1][2] = "假设蒙特利尔市";  
    39. 1][3] = "假设Montreal商学院";  
    40.     
    41. "\nThis is s3 after s4 has changed.");  
    42. for(int i = 0;i < s3.length ;i++){  
    43. for(int j = 0; j< s3[0].length ;j++){  
    44. ",");  
    45.     }  
    46.    }  
    47.     
    48. "\nThis is s4");  
    49. for(int i = 0;i < s4.length ;i++){  
    50. for(int j = 0; j < s4[0].length ; j++){  
    51. ",");  
    52.     }  
    53.         
    54.    }  
    55. }  
    56.   
    57. }


    结果: 



    This is s1 


    中国,山西,太原,TYUT,zyy,加拿大,不知道哪个州,不知道哪个市,不知道哪个学校,yxf, 


    This is s2 


    中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf, 


    This is original s3 


    中国,山西,太原,TYUT,zyy,加拿大,不知道哪个州,不知道哪个市,不知道哪个学校,yxf, 


    This is s3 after s4 has changed. 


    中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf, 


    This is s4 


    中国,山西,太原,TYUT,zyy,加拿大,假设蒙大拿州,假设蒙特利尔市,假设Montreal商学院,yxf,