首页 文章

这个程序的流程是什么?请启发我的知识

提问于
浏览
0

调用obj1.test2(obj2)在此方法中应用了哪些值时会发生什么?如果我们交换 Value 是什么是先前的和应用的 Value ?请启发我的知识

package app4;

public class T 
{
  int i;
  static void test1(T t1, T t2)
  {
    int x = t1.i;
    t1.i = t2.i;
    t2.i = x;
  }
  void test2(T t1)
  {
    int x = t1.i;
    t1.i = this.i;
    this.i = x;
  }
  public static void main(String[] args) 
  {
    T obj1 = new T(), obj2 = new T();
    obj1.i = 1;
    obj2.i = 2;
    test1(obj1, obj2);
    System.out.println(obj1.i + "," + obj2.i);
    obj1.test2(obj2);
    System.out.println(obj1.i + "," + obj2.i);
  }
}

1 回答

  • 0

    两种方法都在对象值之间进行交换 . 唯一的区别是一种方法使用两个参数而另一种方法只使用一个 . 您可以按照评论进行更好的理解 .

    public class T 
    {
      int i;
      static void test1(T t1, T t2) // t1 = 1, t2 = 2
      {
        int x = t1.i;
        t1.i = t2.i;
        t2.i = x;
      }
      void test2(T t1) // t1 = 1
      {
        int x = t1.i;  
        t1.i = this.i; // 'this' is a keyword in java that is referring to the current object 
        this.i = x;    /* in our case the current object is obj1, and because the values have
                        * been swapped in the first method, this.i = 2 */
      }
      public static void main(String[] args) 
      {
        T obj1 = new T(), obj2 = new T();
        obj1.i = 1;
        obj2.i = 2;
        test1(obj1, obj2); // after returning from this method: obj1 = 2, obj2 = 1
        System.out.println(obj1.i + "," + obj2.i);
        obj1.test2(obj2); // after returning from this method: obj1 = 1, obj2 = 2
        System.out.println(obj1.i + "," + obj2.i);
      }
    }
    

相关问题