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类型,可以进行值传递。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124414.htm