突然想到一个问题,进来看。

aipb2008 2008-04-15 12:38:27
在java中如何交换两个变量的值

c/c++:
void swap(int *a,int *b){
int t = *a;
*a = *b;
*b = t;
}
void swap(int &a,int &b){
int t = a;
a = b;
b = t;
}

在java中怎么实现?
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2008-04-15
  • 打赏
  • 举报
回复
不要用函数来交换, 在哪里需要就在哪里写,函数调用对对象来说都是传递引用,对基本数据类型来说都是值传递
aipb2008 2008-04-15
  • 打赏
  • 举报
回复
晕134楼
我知道java中没有引用传递,我只是觉得要是想实现swap,有没有类似的方法而已。
anqini 2008-04-15
  • 打赏
  • 举报
回复
把两个相换的变量作为某个类的成员变量,之后相换就可以。但是你这样传基本类型是不可行的!
anqini 2008-04-15
  • 打赏
  • 举报
回复
把两个相换的变量作为某个类的成员变量,之后相换就可以。但是你这样传基本类型是不可行的!
yangk_105 2008-04-15
  • 打赏
  • 举报
回复

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 5;
int j = 6;
Test t = new Test();
t.ch(i, j);
System.out.println("i = " + i + " j = " + j);

}

public void ch(int a, int b){
System.out.println("a = " + a + " b = " + b);
int c = a;
a = b;
b = c;
System.out.println("a = " + a + " b = " + b);
}

}

自己看吧,改变的只是a和b,但是原始的i和j并没有变化
  • 打赏
  • 举报
回复
做不到
aipb2008 2008-04-15
  • 打赏
  • 举报
回复
错了,是*p = &i
aipb2008 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 anqini 的回复:]
引用 6 楼 aipb2008 的回复:
晕134楼
我知道java中没有引用传递,我只是觉得要是想实现swap,有没有类似的方法而已。


你这句话本身就有错误。。。咋没有引用传递。。。
[/Quote]
理解不一样而已,我觉得程序员操纵的对象是对象引用,所以传值的时候传时候传的是这个引用的拷贝。
所以我认为java里一切都是值传递。
c里:
void f(int *p){}
int i = 1,*p = &a;
f(p)

这里你说传的是什么?
fox000002 2008-04-15
  • 打赏
  • 举报
回复
java中也是一样写吧,只是去掉指针或引用符号
anqini 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aipb2008 的回复:]
晕134楼
我知道java中没有引用传递,我只是觉得要是想实现swap,有没有类似的方法而已。
[/Quote]

你这句话本身就有错误。。。咋没有引用传递。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧