当前位置:编程学习 > JAVA >>

数组的复制与动态扩展算法

\
[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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,