1.代码举例
class Person {
private Integer id;
private String personName;
public Person(String personName) {
this.personName = personName;
}
}
public class TransferValueDemo {
public void changeValue1(int age) {
age = 30;
}
public void changeValue2(Person person) {
person.setPersonName("XXXX");
}
public void changeValue3(String str) {
str = "XXX";
}
public static void main(String[] args) {
TransferValueDemo test = new TransferValueDemo();
// 定义基本数据类型
int age = 20;
test.changeValue1(age);
System.out.println("age ----" + age);
// 实例化person类
Person person = new Person("abc");
test.changeValue2(person);
System.out.println("personName-----" + person.getPersonName());
// String
String str = "abc";
test.changeValue3(str);
System.out.println("string-----" + str);
}
}
2.输出结果
age ----20
personName-----XXXX
string-----abc
3.结果分析
*基本类型传值,只是拷贝一份数值
*对象类型传值,传的是内存地址
*String类传值,因为是字符串常量池,所以各个方法的也只是自己方法里面的指针指向不同的字符串,不会改变main方法的