java中数组的复制
数组复制使我们在编程过程中经常要使用到的,在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中数组的复制的更多相关文章
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
- 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[ ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- 在java 中,数组与 List<T> 类型的相互转换
在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- Java中数组的插入,删除,扩张
Java中数组是不可变的,但是可以通过本地的arraycop来进行数组的插入,删除,扩张.实际上数组是没变的,只是把原来的数组拷贝到了另一个数组,看起来像是改变了. 语法: System.arrayc ...
- java中数组、集合、字符串之间的转换,以及用加强for循环遍历
java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...
- Java 中数组的内存分配
Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...
随机推荐
- 内部类(inner class)的简单介绍
本文主要介绍内部类(inner class)的一些基本应用,将从内部类的分类角度,首先对每一个具体内部类进行介绍.主要包括普通的内部类[common inner class].局部内部类[local ...
- [ CodeVS冲杯之路 ] P1098
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1098/ 显然就是使每堆牌达到总体的平均数,尽量使每次移动时的牌数最大,这就类似于飞行棋,将几个棋子叠起来一起走是最优 ...
- OpenGL入门学习(七)(转)
http://blog.chinaunix.net/uid-20622737-id-1912803.html 今天要讲的是OpenGL光照的基本知识.虽然内容显得有点多,但条理还算比较清晰,理解起来应 ...
- awk 二
节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- hdu 5155(递推)
Harry And Magic Box Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- windows下phpstorm的常用快捷键及使用技巧
1.pubf+回车 声明一个方法 2./ ** 回车 生成注释 3.Ctrl +g 跳转行 4.Ctrl + Alt + L 代码格式化 5.Ctrl +D 复制当前行到下一行 6.Ctrl ...
- 小程序收集formid跳转后收集不到
为了突破微信小程序模板消息限制,需收集到足够的推送码,即每次提交表单时获取到的formId.一个formId代表着开发者有向当前用户推送模板消息的一次权限.当表单组件中的属性report-submit ...
- EL的函数与标签
1 什么EL函数库 EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是由JSTL添加的.下面我们会学习JSTL标签库. EL函数库就是定义一些有返回值的静态方法.然后通过EL语言来调用它们! ...
- 网页结构——head标签内
之前写网页都很标准的格式,最近一个项目出现了页面闪动等一系列问题[项目不是前后端分离], 所以这边有后台的功劳,有部分后台是不管你页面结构的,在他们操作的时候可能会在,你的head内meta前加内联c ...