21 Collection value semantics
Assigning a built-in collection gives the new binding an independent container value.
norm
main() {
List<Integer> original = [1, 2]
List<Integer> changed = original
printLine(original == changed)
changed.add(3)
printLine(original.size())
printLine(changed.size())
printLine(changed[2])
printLine(original == changed)
}Expected output:
text
true
2
3
3
falseThe copies initially compare equal. Adding to changed leaves original at two elements; equality then becomes false because their contents differ. Elements that are class objects can still share their own identity.
Try it: Add the same third element to original and compare equality again.
Precise rules: Reference.