值传递与引用传递
值传递
public class Demo02 {
public static void main(String[] args) {
int a = 1;
Demo02.change(a);
}
public static void change(int a){
a = 3;
}
}
得出的结果是1,原因:实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参。
引用传递
例一:
public class Demo1 {
public static void main(String[] args) {
int [] a={1,2,3};
System.out.println(a[0]);
change(a);
System.out.println(a[0]);
}
public static void change(int[] a ){
a[0]=100;
}
}
结果为:1 100
例二:
public class Demo04 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name = "JiangMingHao";
}
}
class Person{
String name;
}
得出结果为 JiangMingHao 。原因:实参传递给形参的是参数对于 堆内存上的引用地址 实参和 形参在内存上指向 了同一块区域 对形参的修改会影响实参