数组复制使我们在编程过程中经常要使用到的,在java中数组复制我们大概能够分为两种,一种是引用复制,还有一种就是深度复制(复制后两个数组互不相干)。

以下我们就通过測试的方法来具体看看什么是引用复制和深度复制。

引用复制:

顾名思义就是其值是引用的,值得改变会随着被引用的对象改变。

System.out.println("引用复制-----------------------------");
int[] e = {1,2,3,4,56,7,8};
int[] f = e;
for(int i=0;i<f.length;i++){
System.out.println(f[i]);
}
System.out.println("更改原始一维数组引用复制-----------------------------");
for(int i=0;i<e.length;i++){
e[i]=1;
}
for(int i=0;i<f.length;i++){
System.out.println(f[i]); }

结果:

引用复制-----------------------------

1

2

3

4

56

7

8

更改原始一维数组引用复制-----------------------------

1

1

1

1

1

1

1

以下在展示下两种深度复制的代码:

有两种方法:

一种是clone(),还有一种是System.arraycopy().

System.out.println("一维数组深度复制-----------------------------");
int[] a = {1,2,3,4,56,7,8};
int[] b = (int[])a.clone();
for(int i=0;i<b.length;i++){
System.out.println(b[i]); }
System.out.println("更改原始一维数组深度复制-----------------------------");
for(int i=0;i<a.length;i++){
a[i]=1;
}
for(int i=0;i<b.length;i++){
System.out.println(b[i]); } System.out.println("一维数组深度复制1-----------------------------");
int[] c = {1,2,3,4,56,7,8};
int[] d = new int[c.length];
System.arraycopy(c,0, d, 0, c.length);
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}
System.out.println("更改原始一维数组深度复制1-----------------------------");
for(int i=0;i<c.length;i++){
c[i]=1;
}
for(int i=0;i<d.length;i++){
System.out.println(d[i]); }

结果显示:

一维数组深度复制-----------------------------

1

2

3

4

56

7

8

更改原始一维数组深度复制-----------------------------

1

2

3

4

56

7

8

一维数组深度复制1-----------------------------

1

2

3

4

56

7

8

更改原始一维数组深度复制-----------------------------

1

2

3

4

56

7

8

java中数组的复制的更多相关文章

  1. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  2. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  3. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  4. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  5. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  6. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

  7. Java中数组的插入,删除,扩张

    Java中数组是不可变的,但是可以通过本地的arraycop来进行数组的插入,删除,扩张.实际上数组是没变的,只是把原来的数组拷贝到了另一个数组,看起来像是改变了. 语法: System.arrayc ...

  8. java中数组、集合、字符串之间的转换,以及用加强for循环遍历

    java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...

  9. Java 中数组的内存分配

    Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...

随机推荐

  1. 兼容firstChild和firstElementChild

    1.nextSibling和nextElementSibling 顾名思义,就是找下一个节点 nextSibling在低版本浏览器中可以顺利找到下一个元素节点,而在正常浏览器中找到的包含中间空格. n ...

  2. MySQL5.7源码安装问题汇总

    编译安装mysql5.7版本,想试用一下新的版本特性,发现跟之前的5.6版本编译有了一些变化,总结一下避免以后继续入坑.5.6安装方式 cmake版本 5.7编译cmake要求版本最低为2.8,当前为 ...

  3. java集合类深入分析之PriorityQueue(二)

    PriorityQueue介绍 在平时的编程工作中似乎很少碰到PriorityQueue(优先队列) ,故很多人一开始看到优先队列的时候还会有点迷惑.优先队列本质上就是一个最小堆.前面一篇文章介绍了堆 ...

  4. 关于0x*** 十六进制的运算。为什么枚举多用十六进制的运算原因。。

    1.看个人爱好 2.可以看出布尔运算的结果. 3.可以更快进行and和or 运算

  5. C#操作XML序列化与反序列化

    public class XmlSerializerHelper { /// <summary> /// 从XML文件中反序列化读取对象 /// </summary> /// ...

  6. shortcut(NOIP模拟赛)(裸的排序)

    原题: Description Mirek有一条每天从他家去大学工作的最喜欢的路.这个路径由若干个部分组成,且每个部分是10米长的直线.每一个部分是直线连接(没有拐弯)上一个部分或垂直连接上一个部分. ...

  7. C++ 播放音频流(PCM裸流)--改善

    直接上代码,如果有需要可以直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用了(注意将声道和频率与你自己的文件对应).当然我自己也用VS2008写了个例子上传了,如果有需要下载地址如下: ...

  8. c/c++类型转换相关总结

    在c语言中存在两种类型转换:显式类型转换和隐式类型转换: 显示类型转换:在类型前加上(type)变量,对变量进行的转换,程序员自己显式添加: char *ptra = (char*)ptrb; voi ...

  9. const 作用

    转载自:http://www.cnblogs.com/xudong-bupt/p/3509567.html 1.const 修饰成员变量 1 #include<iostream> 2 us ...

  10. [BZOJ1017][JSOI2008]魔兽地图DotR 树形dp

    1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2597  Solved: 1010[Submit][ ...