TransferValue--------转移价值
(栈,先进后出
栈是运行,堆是对象,方法区里是存储方法的。)
实例小练习
package TransferValue;
public class Person {
private Integer id;
private String personName;
public Person(String personName){
this.personName=personName;
}
public Integer getId() {
return id;
}
public String getPersonName() {
return personName;
}
public void setId(Integer id) {
this.id = id;
}
public void setPersonName(String personName) {
this.personName = personName;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", personName='" + personName + '\'' +
'}';
}
}
package TransferValue;
public class TestTransferValue {
public void changeValue1(int age){
age = 30;
}
public void changeValue2(Person person){
person.setPersonName("xxx");
}
public void changeValue3(String str){
str="xxx";
}
public static void main(String[] args) {
TestTransferValue test =new TestTransferValue();
int age=20;
test.changeValue1(age);
System.out.println("age-----" + age);
Person person = new Person("abc");
test.changeValue2(person);
System.out.println("personName------" + person.getPersonName());
String str="abc";
test.changeValue3(str);
System.out.println("String------" + str);
}
}
结果:
age-----20
personName------xxx
String------abc
Process finished with exit code 0
解析:
TransferValue也叫传值,传引用;
int和string是基本类型,person是引用类型;
第三个是原本string池里只有abc,但是指针却要寻找xxx,所以只能自己创建xxx,但是main方法还是执行abc