經典 Java 參數傳遞題目:Java 只有值傳遞,引用傳遞的是「引用的值(地址)」。方法內對參數重新賦值(new 新對象)不會影響外部實參引用;但調用對象方法修改內部狀態會影響外部對象。
package Jan2017;
public class Ques0110 {
public static void main(String[] args) {
Person person = new Person("張三");
System.out.println("修改之前 " + person); // 輸出?
Ques0110.update(person);
System.out.println("修改之後 " + person); // 輸出?
}
public static void update(Person person) {
person = new Person("李四"); // 關鍵行
}
}
class Person {
String name;
Person(String name) { this.name = name; }
public String toString() { return "name: " + name; }
}
請問主程序修改後輸出結果是?
輸出結果:
修改之前 name: 張三 修改之後 name: 張三
new Person("張三") 對象(地址假設 0x100)。輸出將變為: