Java:交换对象

时间:2015-09-19 20:58:41

标签: java

假设我在Java常规对象中没有任何特殊的拷贝构造函数等,并且我想在对象之间进行交换,这是否有效:

MyObject objTmp;
objTmp = obj_1;
obj_1 = obj_2;
obj_2 = objTmp;

或者我应该考虑引用 - objTmp引用obj_1object_1 = obj_2最后objTmp也会引用obj_2所以最后一行obj_2 = objTmp没用,交换失败了? 谢谢,

3 个答案:

答案 0 :(得分:1)

这都是关于引用的,因此它可以正常工作。

第一次赋值后,objTmp引用obj_1引用的对象。 在第二个之后,obj_1引用了obj_2引用的对象,因此将第一个对象的引用保存到objTmp中是好的。

等等......

答案 1 :(得分:1)

通常交换处理值。

您只需要交换参考资料。

答案 2 :(得分:1)

有效。

使用String类对象尝试以下代码段。

public class Swap {
  public static void main(String[] args) {
    String first = new String("first");
    String second = new String("second");

    System.out.println(first + " :: " + second);

    String temp = first;
    first = second;
    second = temp;

    System.out.println(first + " :: " + second);
  }
}

<强>输出:
第一个::第二个 第二个::第一个

  

最终objTmp也会指向obj_2

这不会发生。仅仅因为obj_1引用obj_2并不意味着更新objTemp中的引用。

objTmp将始终指向明确分配给它的引用(obj_1)。