A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘿~~ 中级黑马   /  2014-3-16 22:34  /  1118 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看下面的程序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的值改变了?

4 个回复

倒序浏览
你的代码很乱,好像有错,反正就是看不懂。我把代码重写了一下,你想表达的大概是这个意思?
swap方法传入的是引用型变量,但是在方法交换的是变量指向的对象所有swap交换之后a和b的值是交换的

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

2014-03-16_231603.jpg

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
你的代码有问题,我按照你的意思写了一下,交换以后的值当然是会改变的,你操作的是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);
        }
}

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
楼主,代码很乱,楼下几位的代码很正规,楼主可以尝试一下,有不懂的代码段,代入一些数据,对你的理解会好很多的。
回复 使用道具 举报
代码没问题,就是乱了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马