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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 月夜小楠 中级黑马   /  2014-11-9 15:14  /  1685 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 月夜小楠 于 2014-11-11 23:33 编辑
  1. class SweapDemo
  2. {
  3.        public static void main(String[] args)
  4.        {
  5.             int a = 1,b = 2;
  6.             sweap(a,b);
  7.             System.out.println("a=="+a+",b=="+b);
  8.       }
  9.       public static void sweap(int x,int y)
  10.       {
  11.             int temp = 0;
  12.             temp = x;
  13.             x = y;
  14.             y = temp;
  15.             System.out.println("x=="+x+",y=="+y);
  16.       }
  17. }
复制代码
结果为:
x==2,y==1
a==1,b==2
谁能解释一下是为什么呢?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

10 个回复

倒序浏览
什么为什么?下面sweap方法就是变量互换啊- -
回复 使用道具 举报
http://bbs.itheima.com/thread-145139-1-1.html刚学的时候我也犯愁.{:3_54:}
回复 使用道具 举报
代码中有两个方法
main方法和sweap方法
你把main方法中的两个变量作为参数传给sweap
但是由于两个变量都是值类型
所以就相当于复制了两个变量,
也就是说sweap中的x和y跟a和b没关系
仅仅是复制了a和b的值,
简单理解,相当于定义了四个变量
sweap方法完成交换变量值,然后输出
而这个过程对main方法中的a b变量是没影响的。
回复 使用道具 举报
楼主这么高分肯定是练的走火入魔了,你下面的方法又没有返回值,打印的还是形参互换后的结果,主方法里面虽然调用了swap函数,但没有接收返回值啊,
如果你是数组的话才可以这样互换位子
回复 使用道具 举报
调用sweap()的时候,传的是a和b的拷贝。所以在sweap()内的操作对a和b没有影响。
回复 使用道具 举报
hanxing 发表于 2014-11-9 15:47
楼主这么高分肯定是练的走火入魔了,你下面的方法又没有返回值,打印的还是形参互换后的结果,主方法里面虽然 ...

呵呵  我有的时候也是这样,总是困在那里走不出来   其实连最基本的东西都忽略了
回复 使用道具 举报
javaAndroid 发表于 2014-11-9 15:41
代码中有两个方法
main方法和sweap方法
你把main方法中的两个变量作为参数传给sweap

谢谢!:)
回复 使用道具 举报
hanxing 发表于 2014-11-9 15:47
楼主这么高分肯定是练的走火入魔了,你下面的方法又没有返回值,打印的还是形参互换后的结果,主方法里面虽然 ...

谢谢!:)
回复 使用道具 举报
DamonZh 发表于 2014-11-9 15:48
调用sweap()的时候,传的是a和b的拷贝。所以在sweap()内的操作对a和b没有影响。 ...

谢谢!:)
回复 使用道具 举报
zzg8888 来自手机 中级黑马 2014-11-11 23:47:29
11#
关于值传递的,传递的只是值的副本,不会改变原值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马