前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中数组的复制

Java中数组的复制

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-25 15:27:54
1.9K0
发布2019-01-25 15:27:54
举报

首先需要明确的是Java中数组的复制是引用传递,而不是值传递

两者有什么不同呢,首先来看一个实例。

代码语言:javascript
复制
public class ArrayDemo {
	public static void main(String[] args) {
		int[] array1 = {1,2,3,4,5};
		int[] array2 = array1;
		for (int i = 0; i < array1.length; i++) {
			array1[i] += 1;
		}
		for (int i = 0; i < array2.length; i++) {
			System.out.print(array2[i]);
			System.out.print(" ");
		}
	}
}

运行结果:

代码语言:javascript
复制
2 3 4 5 6 

看到了吗,array2会随着array1的变化而变化,array2只是对array1的一个引用。

那要进行复制怎么办呢?

有3中方法进行数组的复制

1. for循环进行遍历

代码语言:javascript
复制
public class ArrayDemo {
	public static void main(String[] args) {
		int[] array1 = {1,2,3,4,5};
		int[] array2 = new int[array1.length];
		for (int i = 0; i < array2.length; i++) {
			array2[i] = array1[i];
		}
	}
}

2. Arrays类的copyOf方法

代码语言:javascript
复制
int[] array2 = Arrays.copyOf(array1, array1.length);

3. System类的arraycopy方法

代码语言:javascript
复制
int[] array3 = new int[array1.length];
		System.arraycopy(array1, 0, array3, 0, array1.length);

具体每个参数的意思,参考Java API文档。

那二维数组的复制会出现什么情况呢?明白了二维数组时数组的数组,其实也很容易想明白。复制的方法同样有3中,下面只给出其中一种的实例:

代码语言:javascript
复制
int[][] matrix2 = new int[row][column];
		
for (int i = 0; i < row; i++) {
    matrix2[i] = Arrays.copyOf(matrix1[i], column);
}

即对利用循环对二维数组的每一行进行拷贝操作,这样才能得到一个真正的拷贝数组。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年03月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档