gpt4 book ai didi

java - 使用基元进行浅复制

转载 作者:行者123 更新时间:2023-12-01 09:39:16 25 4
gpt4 key购买 nike

根据我对 Java 的了解(可以说是相当少=P),Java 对待原始值与对象的方式不同。我能想到的一个例子是,基元是按值传递的,而对象是通过其引用的值传递的。

对此进行扩展,我实现了创建 int 数组的代码,并将其浅复制到新的 int 数组:

public class Test {
public static void main(String[] args){
int[] array = {2,3,4,5};
int[] copy = array;
copy[1] = 0;

for (int i : copy){
System.out.print(i);}
System.out.println();

for (int i : array){
System.out.print(i);}
}
}

但是,输出是:

2045
2045

那么,让我困惑的是为什么两个数组都会改变?我想当我们复制原始数组时,我们只复制了元素的值(因为我们正在处理基元)?

最佳答案

您根本没有复制数组。您所做的就是使引用 arraycopy 指向内存中的同一个数组。因此,当您通过一个引用更改数组时,另一个引用将指向相同的更改。

关于java - 使用基元进行浅复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com