黑马程序员技术交流社区
标题:
新手问题:置换位置
[打印本页]
作者:
王亚男
时间:
2012-3-2 11:00
标题:
新手问题:置换位置
本帖最后由 qwert 于 2012-3-2 19:02 编辑
今儿个在回顾老视频的时候,遇到一个小问题,突然晕了……
请前辈们解释下,勿笑……
class Swap
{
public static void main(String[] args)
{
int x=8;
int y=9;
System.out.println("x="+x+",y="+y);
Swap_3(x,y); //这里使用了置换方法,为什么打印出来还是没有置换……如果不用方法,直接写在主方法里或者把输出语句放在Swap_3(int a,int b)里是可以的..请前辈解释下..
System.out.println("x="+x+",y="+y);
}
public static void Swap_3(int a,int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
}
复制代码
作者:
张锐
时间:
2012-3-2 20:05
形参传递的是实参的复制体,函数改变了复制体的值,而实参并没有改变。
作者:
泮和顺
时间:
2012-3-2 20:51
本帖最后由 泮和顺 于 2012-3-2 21:27 编辑
#include<stdio.h>
void swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
swap(&a,&b);
printf("%d %d\n",a,b);
return 0;
} c语言版本的这样可以传递实参的 但是JAVA怎么改写呢
作者:
黄秋
时间:
2012-3-3 01:07
泮和顺 发表于 2012-3-2 20:51
#include
void swap(int *a,int *b)
{
JAVA不象C 有指针,只能交换对象属性的值(数组内元素的值也行),例如:
public class Test {
int a,b;
public static void main(String[] args) {
Test t=new Test();
t.a=3;t.b=5;
swap(t,t.a,t.b);
System.out.println("a="+t.a+" b="+t.b);
}
public static void swap(Test t,int m,int n){
t.a=n;
t.b=m;
}
}
复制代码
作者:
王亚男
时间:
2012-3-3 10:28
谢谢大家,我已经明白了~~
真是太感谢了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2