本帖最后由 丁桂松 于 2012-5-28 15:56 编辑
- package 复习题;
- import java.util.Arrays;
- public class 复习题九 {
- /**
- * 数组复制的的几种方法
- */
- public static void main(String[] args) {
- //声明一个数组
- int arr[] = { 2113, 234, 4, 5, 1, 3, 1 };
- //动态复制
- int arr1[] = new int[arr.length];
- for (int i = 0; i < arr.length; i++) {
- arr1[i] = arr[i];
- }
- //输出arr1
- printArray(arr1);
- //调用Arrays.copyOf();
- int arr3[] = Arrays.copyOf(arr, arr.length);
- printArray(arr3);
- //调用System.arraycopy();
- int arr4[] = new int[arr.length];
- System.arraycopy(arr, 0, arr4, 0, arr.length);
- printArray(arr4);
- }
- static void printArray(int arr[]) { // 输出数组的方法
- System.out.print("{"); // 首次打印左边中括号
- for (int i = 0; i < arr.length; i++) { // 遍历数组的角标
- if (i != arr.length - 1) { // 如果角标不是最后一位角标,就打印元素和逗号
- System.out.print(arr[i] + ", ");
- } else { // 否则(角标是最后一位角标),就打印元素并继续打印右边中括号
- System.out.print(arr[i] + "}");
- }
- // 把上面的if .. else语句可以改写成下面的三元运算符形式
- // System.out.print(i==arr.length-1?arr[i]+"}":arr[i]+",");
- }
- }
- }
复制代码- package java基础知识.数组和常用算法;
- public class 常用算法_数组复制Test1 {
- /**
- * @param 通过for循环来完成数组的复制
- */
- public static void main(String[] args) {
- // TODO 声明2个数组 int []a; int [] b;给数组a赋值,b不赋值
- int a[] = { 2133, 1194, 411234, 41123, 4112, 341 };// 数组a
- int b[] = new int[a.length]; // 数组b,定义长度与a 相等
- for (int i = 0; i < a.length; i++) { // 循环遍历数组a的角标
- b[i] = a[i]; // 把数组a每个角标对应的元素赋值给数组b对应的角标
- }
- // 输出数组b被复制以后的结果
- for (int i = 0; i < b.length; i++) {
- System.out.print(b[i] + "\t");
- }
- // 变量的赋值和复制
- int x = 8;
- int y;
- y = x;
- System.out.println("\n------------------------------------------");
- System.out.println(y);
- // 数组是否能这么赋值呢?
- int m[] = { 2133, 1194, 411234, 41123, 4112, 341 };
- int n[];
- n = m;
- System.out.println("------------------------------------------");
- System.out.println(n); // 打印出地址值
- System.out.println("------------------------------------------");
- // 打印输出n复制以后的
- for (int i = 0; i < n.length; i++) {
- System.out.print(n[i] + "\t");
- }
- // 数组的复制
- int[] c = { 13, 113, 412, 434, 14 };
- int[] d = new int[c.length];// int d [] = new int [5];
- System.out.println("\n------------------------------------------");
- System.out.print("数组c对应的每个元素输出结果是 :\n");
- for (int i = 0; i < c.length; i++) {
- System.out.print(c[i] + "\t");
- }
- System.out.println("\n------------------------------------------");
- System.out.println("数组d复制之前的输出结果是 :");
- for (int i = 0; i < d.length; i++) {
- System.out.print(d[i] + "\t");
- }
- // 将c数组中的每个元素复制到d数组中对应的每一个元素中
- for (int i = 0; i < c.length; i++) {// 复制数组
- d[i] = c[i]; // d[0]=c[0];d[1]=c[1];............
- }
- System.out.println("\n------------------------------------------");
- System.out.println("赋值以后的数组d中的元素为 :");
- for (int i = 0; i < d.length; i++) {
- System.out.print(d[i] + "\t");
- }
- }
- //只有通过循环才能将数组中的每个元素赋值到目标数组中,达到数组复制的目的,目标数组的大小不能小于源数组的大小,否则运行时会出现异常
- }
复制代码- package java基础知识.数组和常用算法;
- import java.util.Arrays;
- public class 常用算法_数组复制Test2 {
- /**
- * @param 在java中也可以使用System类所提供的arraycopy ()方法来实现数组复制,下面是代码实现; 在jdk
- * 6.0以后.也为Arrays类新增了数组复制的copyOf()方法,来实现数组的复制
- */
- public static void main(String[] args) {
- // 使用System类所提供的arraycopy()方法来实现数组的复制
- String a[] = { "荷花池边", "荷花飘", "", ",", "公蛤蟆", "搂住", "母蛤蟆腰", "!" };
- String b[] = new String[a.length];
- System.arraycopy(a, 0, b, 0, a.length);// 这个方式必须明确自行建立一个数组对象
- System.out.println("数组b的输出结果是 :");
- for (int i = 0; i < b.length; i++) {
- System.out.print(b[i]);
- }
- // 在JDK 6中,Array类别新增了copyOf();方法,可以直接传回一个新的数组对象.而当中包括和复制的内容
- String c[] = Arrays.copyOf(a, a.length);
- System.out.println("\n数组c的输出结果是 :");
- for (int i = 0; i < c.length; i++) {
- System.out.print(c[i]);
- }
- // Arrays的copyOf()方法传回的数组是新的数组对象,所以你改变传回数组中的元素,也不会影响原来的值
- // copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值
- String d[] = Arrays.copyOf(a, 10);
- System.out.println("\n数组d的输出结果是 :");
- for (int i = 0; i < d.length; i++) {
- System.out.print(d[i]);
- }
- // System.arraycopy()的使用方法
- // System.arraycopy(被复制的数组名,被复制数组的初始角标,要求复制的数组名,要求复制的初始角标,被复制数组的长度)
- int arr1[] = { 1, 23, 44, 56, 7 };
- // System.arraycopy()方法的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值
- int arr2[] = new int[10];
- System.arraycopy(arr1, 0, arr2, 2, arr1.length);
- System.out.println("\n数组arr2的输出结果是 :");
- for (int i = 0; i < arr2.length; i++) {
- System.out.print(arr2[i] + "\t");
- }
- System.out.println("\n数组arr1的被复制以后的输出结果是 :");
- for (int i = 0; i < arr1.length; i++) {
- System.out.print(arr1[i] + "\t");
- }
- //Arrays.copyOf();的使用
- //新建数组 = Arrays.copyOf(被复制的数组名,数组长度)
- int arr3[] = Arrays.copyOf(arr1, arr1.length);
- System.out.println("\n数组arr3的被复制以后的输出结果是 :");
- for (int i = 0; i < arr3.length; i++) {
- System.out.print(arr3[i] + "\t");
- }
- }
- }
复制代码 |
|