java调用方法传值
时间: 2023-11-12 14:59:39 浏览: 98
对Java中传值调用的理解分析
在Java中,方法参数传递的是值传递。也就是说,当我们调用一个方法时,实参的值会被复制到形参中,方法内部对形参的修改不会影响到实参的值。如果形参是对象类型,那么复制的是对象的引用,也就是说,方法内部对对象属性的修改会影响到原对象。
举个例子,假设有以下代码:
```
public class Test {
public static void main(String[] args) {
int a = 1;
changeValue(a);
System.out.println(a); // 输出1
}
public static void changeValue(int b) {
b = 2;
}
}
```
在这个例子中,我们定义了一个名为changeValue的方法,它接收一个int类型的参数b。在main方法中,我们定义了一个int类型的变量a,并将其赋值为1。然后我们调用changeValue方法,并将a作为参数传递给它。在changeValue方法内部,我们将b的值修改为2。但是,在main方法中,我们输出a的值时,发现它仍然是1。这就说明了Java中方法参数传递的是值传递。
如果我们将上面的例子稍微修改一下,让changeValue方法接收一个对象类型的参数,那么情况就会有所不同:
```
public class Test {
public static void main(String[] args) {
Person p = new Person("Tom");
changeName(p);
System.out.println(p.getName()); // 输出Jerry
}
public static void changeName(Person person) {
person.setName("Jerry");
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
在这个例子中,我们定义了一个名为Person的类,它有一个名为name的属性和相应的getter和setter方法。在main方法中,我们创建了一个Person对象p,并将其名字设置为Tom。然后我们调用changeName方法,并将p作为参数传递给它。在changeName方法内部,我们将person的名字修改为Jerry。最后,在main方法中,我们输出p的名字时,发现它已经变成了Jerry。这就说明了Java中方法参数传递的是值传递,但是如果形参是对象类型,那么复制的是对象的引用,也就是说,方法内部对对象属性的修改会影响到原对象。
阅读全文