以下代码打印出来的结果是:
st1 has:[]
st2 has:[100]这个结果大大的出乎我的意外,st2引用已经覆盖了st1引用,他们指向的内容应该一样啊,真是搞不懂,请问大家的意见呢,谢谢
class B { public static void main(String[] args) {
Stack st1 = new Stack();
Stack st2 = new Stack();
new B().Method(st1, st2);
System.out.println("st1 has:" + st1);
System.out.println("st2 has:" + st2);
} private void Method(Stack st1, Stack st2) {
st2.push(new Integer(100));
st1 = st2;
}
}
st1 has:[]
st2 has:[100]这个结果大大的出乎我的意外,st2引用已经覆盖了st1引用,他们指向的内容应该一样啊,真是搞不懂,请问大家的意见呢,谢谢
class B { public static void main(String[] args) {
Stack st1 = new Stack();
Stack st2 = new Stack();
new B().Method(st1, st2);
System.out.println("st1 has:" + st1);
System.out.println("st2 has:" + st2);
} private void Method(Stack st1, Stack st2) {
st2.push(new Integer(100));
st1 = st2;
}
}
st2.push(new Integer(100));
st1 = st2;
}
这个只是让Method方法内的st1=st2,只影响Method方法的局部变量, 不影响调用者的局部变量,