java一维数组和二位数组调用clone方法的区别
一维数组的clone方法
测试代码
public static void main(String[] args){
int a[]=new int[]{1,2,3};
int b[]=a.clone();
b[0]=0;
System.out.println(a[0]+ " "+b[0]);
}
结果打印的是 1 0
说明一位数组的clone
方法是深拷贝数组b
和数组a
并不是同一个对象
二位数组的clone方法
测试代码
public static void main(String[] args){
int[][] a=new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}};
int[][] b=a.clone();
b[0][0]=0;
System.out.println(a[0][0]+ " "+b[0][0]);
}
打印的是 0 0
修改数组b的数据,数组a
中的数据会改变
如果执行代码 System.out.println(a[0]==b[0]);
会发现输出的是 true
以上结果说明二位数组的clone
方法是浅拷贝。
事实上java中并没有二位数组的概念,二位数组实际上是对多个一维数组的引用。
而clone
方法只拷贝了这些一位数组的引用。所以修改的时候实际上还是修改的原来的数组。
java中如何实现二位数组的深拷贝
int[][] a=new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}};
int[][] b=new int[a.length][];
for(int i=0;i<a.length;i++){
b[i]=a[i].clone();
}
评论区
请写下您的评论...
猜你喜欢
blog
js中二维数组的深拷贝方法
前端(h5)
2248
functioncopyArr(arr){ varout=[], i=0, len=arr.length; for(;ilen;i++){ if(arr[i]instanceofArray){ out[i]=this.copyArr(arr[i]); }else{ out[i]=arr[i]; } } returnout; }
ofc
c#二维数组的初始化和遍历
weblog
3341
定义数组int[,]area={{0,0},{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,-1},{-1,1}};遍历数组for(inti=0
blog
二维数组的行遍历和列遍历
数据结构与算法
4633
intcol=sizeof(arr[0])/sizeof(int);//列//打印arr数组voidprintArr(){ for(inti=0;irow;i++){ for(intj=0;jcol;j++)
blog
for in 和 for of 的区别
javascript,前端
1143
jsjavascriptforin和forof的区别,forof遍历的原理
一、区别
forin是ES5的语法,forof是ES6的语法forin是无序遍历数组或对象的,也就是随机遍历,不按照顺序来
weblog
4105
vue使用v-for遍历数组和遍历对象splic(...)方法的使用请参考:http://www.jiajiajia.club/blog/artical/262!DOCTYPEhtmlhtml
前端(h5)
2708
概念浅拷贝只会拷贝一层,如果数组中是对象,则只会拷贝对象引用,如果是基本数据类型则会拷贝值。深拷贝多层次拷贝,如果数组中是对象,则会连同对象一起拷贝。concat方法实现浅拷贝vara=[{id:1
blog
数据结构-算法-完全二叉树的权值
数据结构与算法
5926
试题描述:思路:用数组表示完全二叉树,用先序遍历的方式遍历每一层的节点,用一个数组储存每一层的和,因为数据规模小于100000所以用一个容量为17的数组即可。计算完每一层的和,再比较层数最小之和最大
blog
算法-特别数的和
数据结构与算法
9330
问题描述:思路:遍历1-n个数,判断是否满足条件。代码:packageclub.test;publicclassTestMain11{ publicstaticvoidmain(String
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。