目录
序、概念认定
实参:在方法调用时传递给方法的参数
形参:方法执行时接收的参数
传参:在方法调用时将数据传递给方法的过程
(注:传参的原理同样适用于赋值)
一、基本数据类型的传参
基本数据类型传参传递的是值,传递过程中拷贝了一个相同的值,再对值进行操作,因此形参的改变不影响实参。
代码如下(示例):
public class test {
public static void main(String[] args) {
int age = 10;
System.out.println("传参前:" + age);
new Util().f1(age);
System.out.println("传参后:" + age);
}
}
class Cat {
private int age;
public Cat(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Cat{" +
"age=" + age +
'}';
}
}
class Util {
public void f1(int age) {
age = 15;
}
}
运行结果如下:
传参前:10
传参后:10
二、引用数据类型的传参
引用数据类型的传参传递的是地址,传递过程中拷贝了一份引用地址,实际仍是对同一个对象进行操作,因此形参的改变会影响到实参。
(注意:无论被调用的方法是不是静态的,形参的改变都会影响到实参)
代码如下(示例):
public class test {
public static void main(String[] args) {
Cat cat = new Cat(10);
System.out.println("传参前:" + cat);
new Util().f2(cat);
System.out.println("传参后:" + cat);
}
}
class Cat {
private int age;
public Cat(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Cat{" +
"age=" + age +
'}';
}
}
class Util {
public void f2(Cat cat) {
cat.setAge(15);
}
}
运行结果如下:
传参前:Cat{age=10}
传参后:Cat{age=15}