zoukankan      html  css  js  c++  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]);
    	}
    }

    我们使用数组对象的复制来实现数组的隔离性

    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提供的数组复制的方法

    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)形式输出即可
    	}
    }


  • 相关阅读:
    常用纹理数据库
    开源许可协议
    3TB-GPT-MBR
    ubuntu配置cudnn
    神经网络模型种类
    What is R语言
    DataWindow.NET 控件 实现点击列头排序
    PB调用C# Windows窗体
    工商银行卡网上查询开户行
    【DevExpress】1、SearchLookUpEdit详解
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3192333.html
Copyright © 2011-2022 走看看