黑马程序员技术交流社区
标题:
交换两个数
[打印本页]
作者:
ifuzhen
时间:
2014-5-14 18:52
标题:
交换两个数
本帖最后由 ifuzhen 于 2014-5-14 19:50 编辑
class Test
{
public static void main(String[] args)
{
int a =3;
int b =4;
System.out.println(a+""+b);
change(a,b);
System.out.println(a+""+b);
}
public static void change(int a,int b)
{
int temp =a;
a = b;
b =temp;
}
}
复制代码
a 和 b 怎么没有交换啊?
作者:
۩大世界小人物
时间:
2014-5-14 19:17
class Test
{
public static void main(String[] args)
{
int a =3;
int b =4;
System.out.println(a+""+b);
change(a,b);
System.out.println(a+""+b);
}
public static void change(int a,int b)
{
int temp =a;
a = b;
b =temp;
System.out.println(a+""+b);//新加的一个打印
}
}
结果将是 34 43 34
解释: 当主函数中调用 change(a,b);函数时 , 这时会给 change(3,4);的俩个形参赋值。
然后函数内部交换两个形参的值。 change(a,b);运行 结束,出栈比释放空间,并没有对mian()函数中的两个局部变量产生任何影响。。
作者:
苗润
时间:
2014-5-14 19:21
当你调用chang方法是 只相当于将原来变量的值赋给了方法的中变量的值 并没有把变量本身穿进去,所以交换的只是方法中的变量 关于这方面 你去看看 堆 栈 方法区的定义 区别 如果学过C的话 里面的地址传递和值传递就是说的这个
作者:
张盼
时间:
2014-5-14 19:26
本帖最后由 张盼 于 2014-5-14 19:29 编辑
因为change()方法没有返回值,所以要在change()方法里面输出交换后的结果
QQ图片20140514192758.jpg
(56.31 KB, 下载次数: 26)
下载附件
2014-5-14 19:29 上传
作者:
彭旭文
时间:
2014-5-14 21:01
public static void change(int a1,int b1)
{
int temp =a1;
a1 = b1;
b1 =temp;
}
虽然change方法把a,b的值传进了change函数里面计算,经过change函数计算后,a1和b1的值调换了,但是change函数并没有把函数里面的a1,b1值返回给main主函数里面的a,b。事实上change函数里面的a1,b1值对main主函数里面的a,b值没有影响,所以无法将主函数的a,b值调换。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2