在java中如何交换两个基本类型?

解决方案 »

  1.   

    问题是怎样用java写出一个类似c++这样的函数:
    void swap(int & a,int & b)
    {
    int temp = a;
    a = b;
    b = temp;}
      

  2.   

    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);
    }
    }
      

  3.   

    新建第三个对象
    copy一下行不?
      

  4.   

    java能实现基本数据类型变量之间的交换?感觉Integer、Double之类的对象才行的吧?不知道对不对
      

  5.   

    java能实现基本数据类型变量之间的交换?
    ---------
    不懂什么意思,添加中间变量转换不行么?
      

  6.   

    简单类型变量值不可改变,如 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
      

  7.   

    直接交换两个基本类型肯定是不行的,肯定要借助于对象,用楼上的方法
    或者这样也行啊: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;
    }
    这样就把数组的两个成员交换了
      

  8.   

    还是没有得到满意的答案!  不过还是谢谢各位
    看到过以前的帖子说什么能内联展开的,  有人知道怎么展开吗? 就是说调用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;
    }
    这样并不能交换两个对象,因为传递的是对象的引用的拷贝,而不是引用本身。而如果能在调用处内联展开的话,那就可以了。
      

  9.   

    不知道你想干什么
    你为什么要交换2个对象, 你把对象的引用交换不就可以了, 为什么非要交换2个对象?
    void  swap(T a,T b)
    {
    T temp = a;
    a = b;
    b = temp;
    }
    这样, 你不是可以达到目的呀!
    可能是我不知道你的需求呵呵
      

  10.   

    哦,上面的不行啊,这样是交换不了的,我刚学JAVA,这东西没有指针也没有引用,真是有点搞不懂啊!