当List <integer> A = List <integer> B?</integer> </integer>时会发生什么

时间:2012-05-03 07:22:37

标签: java arraylist

当我这样做时会发生什么:

List<Integer> listA = new ArrayList<Integer>();
List<Integer> ListB = new ArrayList<Integer>();

listA = ...filled with some data...
listB = ...filled with some other data...

listA.clear();
listA = listB;

值是复制还是仅重新引用?如果我现在(在此代码之后)再次致电listA.clear() ,那么listB也会明确吗?

4 个答案:

答案 0 :(得分:6)

好吧,在listA = listB后,变量listA引用与listB相同的列表。 Java中没有像C ++那样的复制构造函数。

答案 1 :(得分:2)

只会复制引用的值,因此它们都将引用相同的Object

答案 2 :(得分:1)

只有原始类型按值复制,如果你这样做,你会有listA和listB引用同一个列表,所以无论你用listA做什么都会对listB产生相同的效果,反之亦然。 如果你想丢失引用,只需将其中一个变量设置为null。

答案 3 :(得分:0)

不,listAlistB是两个不同的整数列表,它们彼此无关。如果您在clear()上执行ListA,则ListB将不受影响。在您的情况下,最后ListA引用已更改,变量现在指向ListB。因此,这两个变量都指向一个ListB的List。因此,对任何这些引用的任何操作都将具有相同的效果。 ListA对象已经为空,它什么都没有。并且没有任何方法可以引用该对象。