java方法的参数传递机制
本笔记来源于周阳老师大厂面试题,视频地址:https://www.bilibili.com/video/BV15J4112785
public class Test {
public static class Person{
private String name;
public Person(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
public void changeValue1(int age){
age=30;
}
public void changeValue2(Person person){
person.setName("xxx");
}
public void changeValue3(String name){
name="xxx";
}
public static void main(String[] args) {
int age=20;
Test test =new Test();
test.changeValue1(age);
System.out.println(age);
Person person=new Person("abc");
test.changeValue2(person);
System.out.println(person.getName());
String s="abc";
test.changeValue3(s);
System.out.println(s);
}
}
程序执行结果:
原理分析:
- int类型是基本类型,数据存放在栈中。传到方法中的是基本类型,不会被改变。
- Person类是程序员自己定义的类,是引用类型变量。一般。传引用类型变量到方法中时,原对象的数据也会改变。
- String类也是一个引用对象,但是其比较特殊,它是有final修饰的类,对它进行修改时,会直接创建一个新的String对象,所以原始的对象并没有被改变。