c语言中
 swap(int* a,int* b)
{inc c = *a;
          *a = *b;
          *b=c;
}
main()
{
 int *a = 1 ;
 int *b = 2 ;
 swap(a,b);
}

解决方案 »

  1.   

    用对象swap(Integer a,Integer b)
    {inc c = a.intValue();
              a= new Interger(b.intValue());
              b = new Integer(c);
    }
      

  2.   

    jdk150(砸破玻璃上火车&举块砖头闹革命)不行啊,试过了,实参的值没变
      

  3.   

    不是吧,交换两个整数的值? 好办啊。Java的书里通常会告诉你怎么使用Holder类的。
      

  4.   

    不过交换值类型的话,Java是不能通过函数做到的,还是自己换吧,
    这也是C++ 引用的好处。
      

  5.   

    嗯,这样可能不行,我给a,b赋了新的对象
    你可以定义一个包含一个int类型的变量
    比如
    public class Test{
    public static void main(String args[]){
    myInteger a = new myInteger(3);
    myInteger b = new myInteger(2);
    swap(a,b);
    }
    static void swap(myInteger a,myInteger b)
    {int c = a.myValue;
              a.myValue= b.myValue;
              b.myValue = c;
    }
    }
    class myInteger{
    myInteger(int a){
    myValue=a;
    }
    public int myValue;
    }
      

  6.   

    我的想法,诸位有什么高见请发表,切盼解决方案
    http://blog.csdn.net/JianZhiZG/archive/2006/12/02/1427086.aspx
      

  7.   

    只能通过将数据封装在类里面,然后通过类属性的存取来交换数据。给你个例子看看:
    //SwapDemo.java
    public class  SwapDemo 
    {
          public static void swap(DataClass a,DataClass b)
    {
               DataClass c=new DataClass(0);
         c.setData(a.getData());//c=a;
         a.setData(b.getData());//a=b;
         b.setData(c.getData());//b=c;这样是不行的,交换对象的引用并不起作用
    }
    public static void main(String[] args)
    {
    DataClass a=new DataClass(10);
    DataClass b=new DataClass(5);
    System.out.println("原始数据:"+a.getData()+"   "+b.getData());
    swap(a,b);
    System.out.println("交换以后:"+a.getData()+"   "+b.getData());
    }}
    class DataClass
    {
    private int a=0;
    DataClass(int a)
    {
    this.a=a;
    }
    public void setData(int a)//设置属性a
    {
    this.a=a;
    }
    public int getData()//读取属性a
    {
    return a;
    }
    }
      

  8.   

    public void swap(int[] arr,int a,int b){
     int temp = arr[a];
     arr[a] = arr[b];
    arr[b] = temp;
    }
    public static void main(){
     int[] arr = new int[]{1,2};
    swap(arr,0,1);
    }
      

  9.   

    class SwapTest
    {
    Integer x = 5, y = 6;
    public static void swap(Object x, Object y)
    {
    Object t = x;
    x = y;
    y = t;
    } public static void main(String[] args)
    {
    Integer x = 5, y = 6; //局部变量x, y
    swap(x, y);
    System.out.println(x + "  " + y); // 输出的是5 6 Object t = x;
    x = y;
    y = (Integer) t;
    System.out.println(x + "  " + y); // 输出的是 6 5 // 使用实例变量交换
    SwapTest s = new SwapTest();
    swap(s.x, s.y);
    System.out.println(x + "  " + y); // 输出的是6 5
    }
    }请看最后一种方法,那就是使x y使用实例变量自动封装成Object类完成交换
      

  10.   

    上面的程序写错了一点点应该是
    class SwapTest
    {
    int x = 5, y = 6;
    public static void swap(Object x, Object y)
    {
    Object t = x;
    x = y;
    y = t;
    } public static void main(String[] args)
    {
    Integer x = 5, y = 6; //局部变量x, y
    swap(x, y);
    System.out.println(x + "  " + y); // 输出的是5 6 Object t = x;
    x = y;
    y = (Integer) t;
    System.out.println(x + "  " + y); // 输出的是 6 5 // 使用实例变量交换
    SwapTest s = new SwapTest();
    swap(s.x, s.y);
    System.out.println(x + "  " + y); // 输出的是6 5
    }
    }
      

  11.   

    正如同上面的例子java是可以实现c或者c++类似的功能的
      

  12.   

    标准做法是用数组~ 
    有自己做的的对象也可以,
    但是用Iteger包装类不行》
      

  13.   

    个人看法,我们必须首先明确一个问题:为什么我们要写swap程序?最根本的目的是方便使用。从这个角度上,我非常推崇C++,因为如果要交换int x,y,在swap函数完成后,C的调用还必须写成swap(&x,&y),从实用的角度讲还有些转弯,而C++则可以直接写swap(x,y),从概念和使用上都是最简单和直接。而如果在调用时要用封装等一类麻烦的Java手段转n多弯,不如直接写t=x;x=y;y=t;几个语句来得简单方便得多,何必又去绕那么多弯呢,所以个人认为如果没有办法封装也好,实现swap函数采取特殊的手段也好,只要调用时不能简单地实现swap(x,y)一类的写法,没有必要在讨论这个问题。说得不好听,叫做脱了裤子放屁--多事。