gpt4 book ai didi

java - Java 如何处理 ArrayList 引用和赋值?

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

我主要用 C 语言编写,但在这个项目中使用 Java。我想知道 Java 到底在做什么。

ArrayList<Integer> prevRow, currRow;
currRow = new ArrayList<Integer>();
for(i =0; i < numRows; i++){
prevRow = currRow;
currRow.clear();
currRow.addAll(aBunchOfItems);
}

prevRow = currRow 行是否正在复制列表,或者 prevRow 现在是否指向与 currRow 相同的列表?如果 prevRow 指向与 currRow 相同的列表,我应该创建一个新的 ArrayList 而不是清除......

private ArrayList<Integer> someFunction(ArrayList<Integer> l){
Collections.sort(l);
return l;
}

main(){
ArrayList<Integer> list = new ArrayList<Integer>(Integer(3), Integer(2), Integer(1));

list = someFunction(list); //Option 1
someFunction(list); //Option 2
}

在类似的问题中,选项1和选项2在上面的代码中做同样的事情吗?

谢谢-

乔纳森

最佳答案

如果您从 C/C++ 转向 Java,请记住这条黄金法则,它将回答几乎所有这些疑问:在 Java 中,变量(基元除外)始终是对某个变量的引用(某种指针)。对象,其本身绝不是对象。

例如

 prevRow = currRow;

正在分配一个引用,因此 prevRow 和 currRow 现在引用同一个对象。对象不会被复制,无论是在赋值中还是在参数传递中(复制/分配的是引用)。等等。

关于java - Java 如何处理 ArrayList 引用和赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777969/

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