什么是值传递、引用传递
java中的传递是值传递,且java没有引用传递。
值传递:将一个变量的值传给另一个变量。不管这个变量基本数据类型还是引用数据类型。引用数据类型的话传的还是值。不过这个值是指向对象的地址。
引用传递:地址传递,传的是另一个变量的内存地址。java中没有引用传递。
理解值传递:
1、基本数据类型:
public static void main(String[] args) {
int a=123;
int b=321;
swap(a,b);
System.out.println("a="+a);
System.out.println("b="+b);
}
public static void swap(int a,int b){
int temp=a;
a=b;
b=a;
}
输出结果:
a=123
b=321
分析:
2、引用数据类型
public static void main(String[] args) {
Persion a=new Persion("张三",18);
Persion b=new Persion("李四",32);
swap(a,b);
System.out.println("a="+a);
System.out.println("b="+b);
}
public static void swap(Persion a,Persion b){
Persion temp=a;
a=b;
b=a;
}
}
class Persion{
private String name;
private int age;
public Persion(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Persion{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
输出结果:
a=Persion{name='张三', age=18}
b=Persion{name='李四', age=32}
分析:
方法执行完以后出栈
总结: 最终原数据还是没有改变。该变的始终是方法内的数据。