java.lang.System的静态方法arraycopy()可以实现数组的复制,讲课的老师说这个方法效率比较高,如果数组有成千上万个元素,那么用这个方法,比用for语句循环快不少。于是我试了试,发现以下问题。
- public class TestArrayCopy {
- /**
- * @param args
- */
- public static void main(String[] args) {
- String[] s1 = { "中国", "山西", "太原", "TYUT", "zyy", "加拿大", "不知道哪个州",
- "不知道哪个市", "不知道哪个学校", "yxf" };
- String[] s2 = new String[10];
- System.arraycopy(s1, 0, s2, 0, 10);
- s2[6] = "假设蒙大拿州";
- s2[7] = "假设蒙特利尔市";
- s2[8] = "假设Montreal商学院";
- System.out.println("This is s1");
- for (int i = 0; i < s1.length; i++) {
- System.out.print(s1[i] + ",");
- }
- System.out.println("\nThis is s2");
- for (int i = 0; i < s2.length; i++) {
- System.out.print(s2[i] + ",");
- }
- String[][] s3 = { { "中国", "山西", "太原", "TYUT", "zyy" },
- { "加拿大", "不知道哪个州", "不知道哪个市", "不知道哪个学校", "yxf" } };
- String[][] s4 = new String[s3.length][s3[0].length];
- System.arraycopy(s3, 0, s4, 0, s3.length);
- System.out.println("\nThis is original s3");
- for (int i = 0; i < s3.length; i++) {
- for (int j = 0; j < s3[0].length; j++) {
- System.out.print(s3[i][j] + ",");
- }
- }
- s4[1][1] = "假设蒙大拿州";
- s4[1][2] = "假设蒙特利尔市";
- s4[1][3] = "假设Montreal商学院";
- System.out.println("\nThis is s3 after s4 has changed.");
- for (int i = 0; i < s3.length; i++) {
- for (int j = 0; j < s3[0].length; j++) {
- System.out.print(s3[i][j] + ",");
- }
- }
- System.out.println("\nThis is s4");
- for (int i = 0; i < s4.length; i++) {
- for (int j = 0; j < s4[0].length; j++) {
- System.out.print(s4[i][j] + ",");
- }
- }
- }
- }