为什么我的 java 交换功能不起作用?

Why is my java swap function not working?

我正在尝试在 java 中创建交换功能,但为什么它不起作用?

void swap(int a, int b) {
   int temp = a;
   a = b;
   b = temp;
}

因为 java 是 pass by value 而不是通过引用传递。您的交换方法不会更改实际的 ab。您实际上交换了仅在方法内部有生命的 ab。您可以通过在 swap 方法中打印 ab 来检查。

您可以return 在数组的帮助下交换值。 (由 sᴜʀᴇsʜ ᴀᴛᴛᴀ 首先添加)

public class Test {

    static int[] swap(int a, int b) {
       return new int[]{b,a};
    }

    public static void main(String[] args) {
        int a = 10,b = 5;
        int[] ba = swap(a,b);
        a = ba[0];
        b = ba[1];
        System.out.println(a);
        System.out.println(b);
    }

}

您的 swap 只是将值的副本复制到 ab 中,因此您只是交换 ab 变量中的值swap范围内。

public class HelloWorld {
    private int a, b;
    HelloWorld(){
        this.a=0;
        this.b=0;
    }
    HelloWorld(int a, int b){
        this.a=a;
        this.b=b;
    }
    void swap() {
       int temp = this.a;
       this.a = this.b;
       this.b = temp;
    }
    public static void main(String[] args) {
        HelloWorld obj = new HelloWorld(10,5);
        obj.swap();
        System.out.println("a="+obj.a);
        System.out.println("b="+obj.b);
    }

}

如果您使用的是局部变量,那么范围将在 swap() 方法内。但是,如果您将它用作实例变量,则此示例会有所帮助。
实例变量的范围将在整个 class.
中可用 对于范围,您可以查看
http://www.tutorialspoint.com/java/java_variable_types.htm
如果你想使用局部变量,那么 TAsk 给出的答案会更有帮助。根据您的要求。