为什么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
答案 0 :(得分:0)
你的问题的答案是,在java中,一切都是通过值传递的。在该方法中,您使用局部变量,并且不会更改方法外的实际变量。 您可以查看此答案,了解有关Pass by Value的详细信息。我希望这能澄清你的疑问。