黑马程序员技术交流社区

标题: 为什么交换后a和b的值改变了 [打印本页]

作者: 嘿~~    时间: 2014-3-16 22:34
标题: 为什么交换后a和b的值改变了
看下面的程序class Person{  int a;  int b;}   
class PersonDemo{  static void swap(Person dw){ int tmp=dw.a; dw.a=dw.b; dw.b=tmp; System.out.println("swap方法中,a的值:"+dw.a+",b的值:"+dw.b); public static void main(String[] args){ int a=5; int b=8; swap(a,b);System.out.println("swap后,a的值:"+dw.a+",b的值:"+dw.b);} }
求解,为什么交换后,a和b的值改变了?
作者: 焚雨成灰    时间: 2014-3-16 23:20
你的代码很乱,好像有错,反正就是看不懂。我把代码重写了一下,你想表达的大概是这个意思?
swap方法传入的是引用型变量,但是在方法交换的是变量指向的对象所有swap交换之后a和b的值是交换的

2014-03-16_231603.jpg (80.67 KB, 下载次数: 7)

2014-03-16_231603.jpg

作者: 王竞    时间: 2014-3-16 23:23
你的代码有问题,我按照你的意思写了一下,交换以后的值当然是会改变的,你操作的是Person类中的成员变量
class Person
{  
        int a;  
        int b;
        public Person(int a, int b) {
                this.a = a;
                this.b = b;
        }

}   
class PersonDemo{  
        public static void swap(Person dw)
        {
                int temp = 0;
                temp = dw.a;
                dw.a = dw.b;
                dw.b = temp;
                System.out.println("swap方法中,a的值:"+dw.a+",b的值:"+dw.b);
        }

        public static void main(String[] args)
        {
                int a=5; int b=8;
                Person p = new Person(a, b);
                swap(p);
                System.out.println("swap后,a的值:"+p.a+",b的值:"+p.b);
        }
}
作者: 小龙编程世界    时间: 2014-3-17 00:05
楼主,代码很乱,楼下几位的代码很正规,楼主可以尝试一下,有不懂的代码段,代入一些数据,对你的理解会好很多的。
作者: 嘿~~    时间: 2014-3-17 18:30
代码没问题,就是乱了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2