public static void main(String[] args){
int a = 8;//a为实参,
f(a);
}
public static void f(int a){
System。out。println(a);//a为形参
}
实参:就是我们要传递给方法的实际参数,在方法外面
形参:就是我们方法签名上定义的参数,在方法里边
值传递:对形参的修改不会影响到实参
引用传递:对形参的修改会影响到实参
基本数据类型
public static void main(String[] args){
int a =8;
f(a);
System.out.println("实参:"+a);
}
public static void f(int a){
a =16;
System.out.println("形参:"+a);
}
打印结果:形参:16 实参: 8
我们将一个基本数据类型传递到方法中然后再方法内修改形参的值,最后打印实参和形参
可以发现实参修改了并没有影响实参的值,这符合值传递
我们创建的对象都在堆中,而基本类型和局部变量是存放在栈中
非基本数据类型
public static void main(String[] args){
Person p = new Person("张三");
f(P);
System.out.println("实参:" +p);
}
public static void f(Person p){
p.name = "李四
System.out.println("形参:" +p);
}
打印结果 形参:李四 实参:李四
我们将一个非基本数据类型也就是对象传递到方法中然后再方法内修改方法的属性,最后打印实参和形参
可以发现实参和形参都被修改了这符合引用1传递
public static void main(String[] args){
Person p = new Person("张三");
f(P);
System.out.println("实参:" +p);
}
public static void f(Person p){
p = new Person(“李四”)
System.out.println("形参:" +p);
}
打印结果 形参:李四 实参:张三