为什么我的java交换函数不起作用?

为什么我的java交换函数不起作用?,java,swap,Java,Swap,我试图在java中创建一个交换函数,但为什么它不起作用呢 void swap(int a, int b) { int temp = a; a = b; b = temp; } 因为java是通过引用传递的,而不是通过引用传递的。您的交换方法不会更改实际的a和b。实际上,您已经交换了a和b,它们仅在方法内部有生命。只需在swap方法中打印a和b即可检查 您可以在数组的帮助下返回交换的值。(首先由添加) 您的swap只将值的副本获取到a和b中,因此您只交换swap范围内a和b变量

我试图在java中创建一个交换函数,但为什么它不起作用呢

void swap(int a, int b) {
   int temp = a;
   a = b;
   b = temp;
}
因为java是通过引用传递的,而不是通过引用传递的。您的交换方法不会更改实际的
a
b
。实际上,您已经交换了
a
b
,它们仅在方法内部有生命。只需在
swap
方法中打印
a
b
即可检查

您可以在数组的帮助下返回交换的值。(首先由添加)


您的
swap
只将值的副本获取到
a
b
中,因此您只交换
swap
范围内
a
b
变量中的值

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()方法中。但如果您将其用作实例变量,此示例将有所帮助。
实例变量的范围将在整个类中可用。
有关范围,您可以查看


若你们想使用局部变量,那个么任务给出的答案将更有帮助。根据您的要求。

在我写作时,您给出了一个很好的答案。将我的解决方案添加到您的答案中。请随意回顾和还原:)可能值得注意的是,java是按值传递的,但是对于对象,它在许多方面表现得好像是按引用传递的,因为对象实际上是对象指针。真的吗??这个答案怎么会比任务的答案更简洁呢?你的代码让OP哭了:DHint:你不能编写一个在Java中工作的交换(带有这个签名)。
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);
    }

}