博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组的复制与动态扩展算法
阅读量:5049 次
发布时间:2019-06-12

本文共 1386 字,大约阅读时间需要 4 分钟。

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

 

 

 

转载于:https://www.cnblogs.com/dyllove98/p/3192333.html

你可能感兴趣的文章
linux 配置SAN存储-IPSAN
查看>>
双链表
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
无线通讯
查看>>
Mongodb Manual阅读笔记:CH9 Sharding
查看>>
AX2009使用NPOI导出EXCEL2007
查看>>
如何删除NSDictionary或NSArray中的NSNull
查看>>
ueditor 结合easyui使用
查看>>
thymeleaf学习笔记
查看>>
进程(第一部分)
查看>>
【题解】 [ZJOI2006]书架 (Splay)
查看>>
Django ORM那些相关操作
查看>>
三星830 SSD的Smart值POR Recovery Count
查看>>
base642photo
查看>>
二分查找和数组合并
查看>>