传值问题
代码结果
age解释(基本数据类型)PersonName解释(引用类型)String的解释(String)
代码
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”这么个对象。
String的解释(String)