Java中方法的参数传递
在Java中,所有的参数传递方式都是 值传递。下面通过例子来简单的说明一下。
一、示例
1、构建Person类
public class Person {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
}
2、编写demo测试类
public class Demo {
public static void main(String[] args) {
int a = 1;
int b = 2;
swap1(a,b);
System.out.println("====================================>调用swap1后");
System.out.println("a = " + a);
System.out.println("b = " + b);
Person person1 = new Person("张三", 20);
Person person2 = new Person("李四", 23);
swap2(person1,person2);
System.out.println("====================================>调用swap2后");
System.out.println(person1.toString());
System.out.println(person2.toString());
swap3(person1,person2);
System.out.println("====================================>调用swap3后");
System.out.println(person1.toString());
System.out.println(person2.toString());
}
public static void swap1(int a1,int b1){
int c = a1;
a1 = b1;
b1 = c;
}
public static void swap2(Person a1,Person b1){
Person c = a1;
a1 = b1;
b1 = c;
}
public static void swap3(Person a1,Person b1){
String name = a1.getName();
a1.setName(b1.getName());
b1.setName(name);
}
}
二、分析
执行结果
可以看到,调用swap1和swap2方法后,变量的值并没有交换,而swap3交换了name的值。下面来画图分析一下。
执行swap1
执行swap2
执行swap3