在静态方法中赋值后,为什么对象引用不同?

时间:2018-06-02 06:37:27

标签: java object methods parameters

为什么a1==a2在主方法中分配a1=a2后为真,但如果我们在另一个静态方法a1==a2中执行相同操作,false会返回m

class A {};
public class Program
{
    static void m(A a1, A a2){
        a1=a2;
    }
    public static void main(String[] args) {
        A a1=new A();
        A a2=new A();
        a1=a2;
        System.out.println(a1==a2);
    }
}

输出:true

class A {};
public class Program
{
    static void m(A a1, A a2){
        a1=a2;
    }
    public static void main(String[] args) {
        A a1=new A();
        A a2=new A();
        m(a1,a2);
        System.out.println(a1==a2);
    }
}

输出:false

1 个答案:

答案 0 :(得分:0)

你的问题的答案是,在java中,一切都是通过值传递的。在该方法中,您使用局部变量,并且不会更改方法外的实际变量。 您可以查看此答案,了解有关Pass by Value的详细信息。我希望这能澄清你的疑问。