如何交换两个对象

qhfu 2005-07-12 11:03:32
在java中如何交换两个基本类型?
...全文
818 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
believefym 2005-07-13
  • 打赏
  • 举报
回复
好像也不行
believefym 2005-07-13
  • 打赏
  • 举报
回复
java能实现基本数据类型变量之间的交换?

感觉Integer、Double之类的对象才行的吧?不知道对不对
MARS.nEIL 2005-07-13
  • 打赏
  • 举报
回复
都赋给Object对象..再赋...
qhfu 2005-07-13
  • 打赏
  • 举报
回复
楼上的大哥能不能具体写一下!
qhfu 2005-07-13
  • 打赏
  • 举报
回复
上面的方法不行,, 有高手给个代码看看吗?
diandian82 2005-07-13
  • 打赏
  • 举报
回复
哦,上面的不行啊,这样是交换不了的,我刚学JAVA,这东西没有指针也没有引用,真是有点搞不懂啊!
diandian82 2005-07-13
  • 打赏
  • 举报
回复
是啊,楼上这样不就行了么?
cdwei80 2005-07-13
  • 打赏
  • 举报
回复
不知道你想干什么。。。
你为什么要交换2个对象, 你把对象的引用交换不就可以了, 为什么非要交换2个对象?
void swap(T a,T b)
{
T temp = a;
a = b;
b = temp;
}
这样, 你不是可以达到目的呀!
可能是我不知道你的需求。。。呵呵
qhfu 2005-07-13
  • 打赏
  • 举报
回复
还是没有得到满意的答案! 不过还是谢谢各位
看到过以前的帖子说什么能内联展开的, 有人知道怎么展开吗?

就是说调用swap(a,b);

相当于在调用处这样展开:
int temp = a;
a = b;
b = a;
如果能这样的话,那么就能交换,
我提这个问题的一个主要目的还是为了交换两个对象,
例如:
class T{

}
void swap(T a,T b)
{
T temp = a;
a = b;
b = temp;
}
这样并不能交换两个对象,因为传递的是对象的引用的拷贝,而不是引用本身。而如果能在调用处内联展开的话,那就可以了。
qyflaoda 2005-07-13
  • 打赏
  • 举报
回复
直接交换两个基本类型肯定是不行的,肯定要借助于对象,用楼上的方法
或者这样也行啊:

public Swap(int[] x) //x=new int[2],x[0]=a,x[1]=b
{
int a=x[0];
x[0]=x[1];
x[1]=a;
}
这样就把数组的两个成员交换了
vic78 2005-07-13
  • 打赏
  • 举报
回复
简单类型变量值不可改变,如 int double long ...
Integer, Long, Double, String 等是final class,也不可变

void swap(int a,int b) {...}

这种函数在java中不能实现,不过可以采用如下方法:


public class Swap {
private int x, y;

public Swap(int x, int y) {
this.x = x;
this.y = y;
}

public void doSwap() {
int i = this.y;
this.y = this.x;
this.x = i;
}

public int getX() { return x;}
public int getY() { return y;}

public static void main(String[] args) {
int x = 5;
int y = 6;
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("----------------");
Swap s = new Swap(x, y);
s.doSwap();
x = s.getX();
y = s.getY();
System.out.println("x=" + x);
System.out.println("y=" + y);
}

}


result :

x=5
y=6
----------------
x=6
y=5

jianhenk 2005-07-13
  • 打赏
  • 举报
回复
java能实现基本数据类型变量之间的交换?
---------
不懂什么意思,添加中间变量转换不行么?
_-_-_-_- 2005-07-12
  • 打赏
  • 举报
回复
新建第三个对象。。。
copy一下行不?
qhfu 2005-07-12
  • 打赏
  • 举报
回复
我要的不是这样,不过还是谢谢了!
不是说可以内联展开的,有人知道怎么展开吗?
interhanchi 2005-07-12
  • 打赏
  • 举报
回复
public class Test{
static int x;
static int y;
static void swap(Test a){
int tmp = 0;
tmp = a.x;
a.x = a.y;
a.y = tmp;
}
public static void main(String[] args){
Test a = new Test();
x=4;
y=5;
swap(a);
System.out.println(x);
System.out.println(y);
}
}
qhfu 2005-07-12
  • 打赏
  • 举报
回复
问题是怎样用java写出一个类似c++这样的函数:
void swap(int & a,int & b)
{
int temp = a;
a = b;
b = temp;

}

62,615

社区成员

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

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