JAVA---数组的复制
JAVA---数组的复制
package lll;
public class Test {
public static void main(String[] args) {
int[] arr1=new int[10];
int[] arr2;
//给arr1赋值并打印
for(int i=0;i<arr1.length;i++){
arr1[i]=i;
System.out.print(arr1[i]+" ");
}
//执行arr2=arr1操作
arr2=arr1;
//对arr2赋值
for(int i=0;i<arr2.length;i++){
arr2[i]=i*2;
}
System.out.println();
//打印arr1
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+" ");
}
}
}
结论:执行arr2=arr1操作后并不会在内存区域开辟一块新的空间,仅仅是将arr2指向arr1原来所指向的内存区域,所以对arr2进行修改其实就是对arr1进行修改。这并不是真正的数组复制
真正的数组复制
package lll;
public class Test {
public static void main(String[] args) {
int[] arr1,arr2;
//arr1初始化
arr1=new int[]{1,2,3,4,5};
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+" ");
}
System.out.println();
//arr2初始化
arr2=new int[arr1.length];
//真正的数组复制
for(int i=0;i<arr1.length;i++){
arr2[i]=arr1[i];
}
//修改arr2数组的值
for(int i=0;i<arr2.length;i++){
arr2[i]=0;
}
//打印arr1数组
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+" ");
}
}
}
由结果可以看到,arr1数组的值并没有因为arr2数组值的改变而改变,证明arr1和arr2所指向的内存区域是不同的,这是真正的数组复制。
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现