Java值傳遞的過程中要有區分,如果是final類型或者final static類型的對象就不可以進行值傳遞。
實體類如下:
public class person {
private String name;
private address ads;
public person() {
this.name = "first";
this.ads=new address(200100);
}
public address getAddress() {
return ads;
}
public String getName() {
return name;
}
}
public class address {
private int code;
public address(int code) {
super();
this.code = code;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
不可以進行值傳遞的情況:
//進行值傳遞,但是傳遞的內容是String,即name;
public void change(person person1){
String nameString=person1.getName();
nameString="second";
}
使用值傳遞的情況:
public void changeaddress(person person1){
address ads=person1.getAddress();
ads.setCode(350000);
}
main函數:
public static void main(String[] args) {
passByValue pByValue=new passByValue();
person person1=new person();
pByValue.changeaddress(person1);
int m=0;
String name2=person1.getName();
address address2=person1.getAddress();
m++;
m=0;
}
這樣可以發現name沒有變化,而address變化了。這是由於name是String類型,為final類型,不可以進行值傳遞;而address不是final類型,可以進行值傳遞。