我来自 C++,带有指针和引用 ( const string& str
/string* str
)。
我了解到 Java 中是通过 new 语句创建对象的。
Bucket b1 = new Bucket();
现在我有一个名为 b1
的引用,它“指向”一个 Bucket
类型的对象,对吗?
在我的 Android 应用程序中,我处理了很多列表。这些列表可能包含 1000 个对象。
for( int i = 0; i < 1000; i++ )
myList.add( new Bucket() );
我现在的列表包含 1000 个 Bucket
对象。或者它是否包含 1000 个对 Bucket
对象的引用?
但是如果我像这样将另一个项目添加到列表中:
b1 = new Bucket();
myList.add( b1 );
b1
和 myList
是否引用/包含相同的对象(当然,myList
在其最后一个索引处)?
如果我有另一个列表:
List<Bucket> anotherList = myList;
两个列表是否引用或包含相同的对象?或者 anotherList
引用 myList
吗?
最佳答案
Java 总是按值传递。然而,任何Object实例的值都是一个引用地址。
在您的问题中,anotherList
不是另一个List
。它是对 myList
的引用,
List<Bucket> anotherList = new ArrayList<>(myList);
这是 List
的另一个实例。
关于Java 列表按引用或值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511454/