传值问题
代码
package cduck.cn;
class Person{
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person() {
}
public Person(String name) {
this.name = name;
}
}
public class TransferValue {
public void changeValue1(int age){
age=30;
}
public void changeValue2(Person person){
person.setName("xxx");
}
public void changeValue3(String s){
s ="xxx";
}
public static void main(String[] args) {
TransferValue transferValue=new TransferValue();
int age=20;
transferValue.changeValue1(age);
System.out.println("age----"+age);
Person person=new Person("zs");
transferValue.changeValue2(person);
System.out.println("PersonName----"+person.getName());
String s="nihao";
transferValue.changeValue3(s);
System.out.println("String-----"+s);
}
}
结果
age解释(基本数据类型)
像这种基本变量类型,传值 传的都是复印件,不会传原件。
当执行到
transferValue.changeValue1(age);
就会去changeValue1(age);这个方法。执行完以后,没有返回值啥的,就直接跳回来执行输出语句,所以相当于age 没变。
PersonName解释(引用类型)
new Person(“zs”);
相当于在堆中放了个“zs”这么个对象。