才看java不久,发现java中传递对象是按引用传递,可是常用的类型却不是,比如说int,double
不知道如何写个函数实现交换两个数的功能

解决方案 »

  1.   

    写了一个还是不对,我是想交换main中的a bclass Swap{
    int i,j;
    Swap(int lhs, int rhs){
    i = lhs;
    j = rhs;
    }
    public void change()
    {
    int t;
    t = j;
    j = i;
    i = t;
    }
    public void print()
    {
    System.out.println("i: " + i + "j: " + j);
    }
    }public class Hello {
    public static void main(String[] args)
    {
    int a = 10, b = 20;
    Swap s = new Swap(a,b);
    System.out.println("Before change");
    s.print();
    s.change();
    System.out.println("After change");
    s.print();
    System.out.println(a + " " + b);
    }
    }
      

  2.   

    楼主写的答案只差一步就成功了,看我给写的完整的答案:
    package com.pplus.dao;class Swap {
    private int i, j; //将类更好地封装 Swap(int lhs, int rhs) {
    i = lhs;
    j = rhs;
    } public Swap change() {  //将返回类型void改为Swap
    int t;
    t = j;
    j = i;
    i = t;
    return new Swap(i,j);
    } public void print() {
    System.out.println("i: " + i + "  j: " + j);
    }

    public int getI() { //新加的,用来取得交换后的数
    return i;
    }

    public int getJ() { //同上
    return j;
    }
    }public class Hello{
    public static void main(String[] args) {
    int a = 10, b = 20;
    Swap s = new Swap(a, b);
    System.out.println("Before change");
    s.print();
    Swap newS=s.change();
    System.out.println("After change");
    s.print();
    a=newS.getI(); //修改
    b=newS.getJ(); //修改
    System.out.println(a + " " + b);
    }
    }
      

  3.   

    ps: Java的做事方法与传统的语言有点不同
      

  4.   

    缺少了指针,让象C里面那种用指针完成的操作不可能实现了。
    JAVA里面的函数只可能是输入/输出或者输入/处理的模式。
      

  5.   

    有点像c#里面的get和set块来做属性~~
      

  6.   

    但关键是这种交换似乎并不是把i和j内存中的的内容交换了 而仅仅是又为i,j分配了一块内存吧
    Swap newS=s.change();
    a=newS.getI(); //修改
    b=newS.getJ(); //修改
    有什么办法可以直接调换内存中的内容呢?
    还是我理解的不到位?