class Person{
int age;
String name;
public Person(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name = name == null ? "" : name;
}
public void setName(String name) {
this.name = name;
}
}
/**
* 栈管运行,堆管存储
* java的八种基础数据类型及对象句柄(即引用地址)都存放在栈里,对象存放在堆中
* String类型的数据存放在常量池中,创建一个String类型的变量=123,首先回到常量池中查找是否存在123,如果存在则Stirng的引用地址会指向123,如果不存在则创建一个新的123,该变量的引用地址则需要转变为新的123的地址
*
*/
public class TestTransferValue {
private void changeValue1(int age){
age = 30;
}
private void changeValue2(Person person){
person.setName("XXX");
}
private void changeValue3(String str){
str = "xxx";
}
public static void main(String[] args) {
TestTransferValue testTransferValue = new TestTransferValue();
int age = 20;
testTransferValue.changeValue1(age);
System.out.println("age====="+age);
Person person = new Person("abc");
testTransferValue.changeValue2(person);
System.out.println("person.name====="+person.getName());
/**
* 重要的就是这个String类型
*/
String str = "abc";
testTransferValue.changeValue3(str);
System.out.println("str====="+str);
}
}
运行结果
age=====20
person.name=====XXX
str=====abc