数组复制使我们在编程过程中经常要使用到的,在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. 物理和虚拟兼容性RDM的区别

    Difference between Physical compatibility RDMs and Virtual compatibility RDMs (2009226) Purpose This ...

  2. 51nod 1583 犯罪计划——矩阵乘法优化dp

    文泽想在埃及做案n次,并且想在最后不用得到惩罚.案件的被分成几种类型.比如说,案件A,当案件A被重复犯两次时,案件A将被认为不是犯罪案件,因此犯案人不用得到惩罚.也就是说,案件A被犯偶数次时,犯案人将 ...

  3. Windows ToolTips简要介绍(转)

    原文转自 https://blog.csdn.net/sesiria/article/details/77450151 Windows 标准控件ToolTips简要介绍 参考文档 MSDN https ...

  4. python xpath 基本用法

    转自:http://www.pythoner.cn/home/blog/python-xpath-basic-usage/ Pyer发现 业界资讯 相册 第7期:Pythoner技术交流沙龙 关于我们 ...

  5. Cocoa Pods 'No such file or Directory' Error

    http://stackoverflow.com/questions/27727998/cocoa-pods-no-such-file-or-directory-error 0down votefav ...

  6. EXCEL匹配结果match并跳转链接hyperlink

    1,有时候想要搜索另一个表格中含有相同内容的项,然后跳转到搜索结果单元. 需要用到两个函数,MATCH和HYPERLINK 2,A表格如下 B表格如下 3,在B2单元格中输入函数 =HYPERLINK ...

  7. 转载——为Xamarin更好的开发而改写的库

    本人现今一直奋战在Xamarin.Android,可能有人会疑惑Xamarin本身就是跨平台的,为什么不能直接跨IOS和Android,这个当然是最后的目标,只是现今你连Android都不能拿出符合商 ...

  8. Javascript中call、apply函数浅析

    call/apply函数作用其实就是改变this的取值,有一句话是:谁调用的这个方法那方法里的this就是指谁,而有时我们会需要改变this值,所以call/apply就能派上用场. 下面我写个方法来 ...

  9. JavaScript实现数字配对游戏

    游戏效果如下图所示: 规则: 在4X5的格子中,有随机的互不相等的10个数,每个数据有两份(也就是20个数,有两两相等的十对),随机分布在20个格子中.游戏开始,弹出二十个数的序列.每次点击格子会显示 ...

  10. Matlab与C++混合编程,添加OpenCV库

    最近在做运动医学软件优化工作,此款软件框架及算法语言全由matlab实现,虽然matlab矩阵运算.数值计算能力强大,但速度让人难以忍受.软件立刻移植到C++上又不太实际,故采用联合编程的方式,速度难 ...