String str = "goods";
public void change(String str2){
str2="goods";
}
public static void main(String args[]){
Test t = new Test();
String str2 = "aaaa";
t.change(str2);
System.out.println(str2);
}
}
輸出結果:
aaaa
並不是:
goods
change 中傳的str2是變量str2的一個地址副本,並沒有修改String str2的值,change函數中修改的只是副本地址的值,而非地址所指向的具體值
public class Test {
String str = "goods";
public void change(DataObj dob){
dob.setName("goods");
}
public static void main(String args[]){
Test t = new Test();
DataObj dob = new DataObj();
dob.setName("aaaa");
t.change(dob);
System.out.println(dob.getName());
}
}
class DataObj{
private String name;
private double value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
}
輸出結果:goods
goods
並不是:aaaa
在change函數中傳入的值爲dob地址副本,在change函數中修改了dob地址所指向對象的成員變量值,所以再次調用dob地址指向的對象則成員變量name值被改變
如果將change函數改爲
public void change(DataObj dob){
dob=null;
}
輸出結果:goods
因爲change函數修改的是dob地址的副本的值,並沒有修改dob地址所指向的對象成員變量,所以輸出值爲goods