输出的是正确的
因为你的方法虽能用标签但你方法得到的值
不是c1.x和c2.x

解决方案 »

  1.   

    Card c1 = new Card();  c1.x 为对象c1的成员变量  要修改他只能 c1.x=?;
      

  2.   

    如果不用swap()这个方法,而直接用
    Card temp = c1; c1 =c2; c2 = temp;结果就是65。
      

  3.   

    关于传参的问题这是我在另外一个帖子里面写的,拷贝过来占点篇幅:对于基本类型没问题,传值;对象传引用,这个引用是什么呢?也就是一个地址的数值。所以有人认为,java就是传值。这其实就是个概念问题,什么叫值,什么叫址。没有值,址用什么来体现。这个争论已经有很多年了,我认为,理解了就行了,不用去争论这些没有意义的东西。
      

  4.   

    执行swap后c1和c2引用同另一个对象,所以值是相同的。:)
      

  5.   

    看下面这段代码你就会明白了:   public class MethodArgTest {
             
             //int x;
             static private void swap(int c1, int c2)
                 {
                    //Card c1 = new Card();  c1.x = 5;
                    //Card c2 = new Card();  c2.x = 6;
                    int temp = c1; c1 = c2; c2 = temp;
                    System.out.println(c1 + "" + c2);
                  }
            public static void main(String[] args) {         int c1 =5;
             int c2 =6;
             
             swap(c1, c2);
             //c1=c2,用这个语句,输出的是66
             //Card temp = c1; c1 =c2; c2 = temp;
             //swap();
             System.out.println(c1 + "" + c2);
        }  }这个例子说明java中包括Primitive在内所有的传参都只是传的Referrence,而不是Object本身。