Java值传递


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类型,可以进行值传递。

本文永久更新链接地址

相关内容