使用方法在Java中交换变量

byt*_*orm 2 java swap object instance pass-by-reference

我知道Java类实例是通过引用传递的.我试图交换两个类实例,但它没有奏效.我不明白,如果他们通过引用传递,那么代码应该有效.我在这里错过了什么?

public class Swapper {

    public static void main(String[] args) {
        NormalClass na = new NormalClass(1235);
        NormalClass nb = new NormalClass(5468);
        System.out.println("Before: 1st Object -->");
        na.print_obj();
        System.out.println("Before: 2nd Object -->");
        nb.print_obj();


        NormalClass.swap(na,nb);


        System.out.println("After: 1st Object -->");
        na.print_obj();
        System.out.println("After: 2nd Object -->");
        nb.print_obj();

    }

}

class NormalClass{
    public int _ID;
    public static void swap(NormalClass a, NormalClass b){
        NormalClass temp;
        temp = a;
        a = b;
        b = temp;
    }
    public void print_obj(){
        System.out.println(this._ID);
    }
    NormalClass(int __id){
        this._ID = __id;
    }
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 6

我知道Java类实例是通过引用传递的

首先,您不传递实例,而是引用它们.引用按值传递.

在您的方法中,您传递了对两个实例的引用,这两个实例创建了两个实例的副本.然后你交换了那些引用的副本.由于它们是按值传递的,因此不会影响原始引用,从而影响行为.仅供参考,Java中的所有内容都按值传递.