阅读量:0
Java中,对象作为参数传递的方式有两种:按值传递和按引用传递。
- 按值传递(Pass-by-Value):当对象作为参数传递时,实际上传递的是对象的引用(地址),而不是对象本身。在方法内部,形参接收到的是对象引用的一个副本,即形参和实参指向同一个对象。如果在方法内部修改了对象的属性,实际上是修改了同一个对象,所以会影响到方法外部的对象。
示例代码:
public class Main { public static void main(String[] args) { Person person = new Person("Alice"); changeName(person); System.out.println(person.getName()); // 输出 "Bob" } public static void changeName(Person p) { p.setName("Bob"); } } 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; } }
- 按引用传递(Pass-by-Reference):在Java中,对象本身是按值传递的,但是对象的引用是可以通过修改对象引用的值来实现传递的。这种方式可以通过定义一个包含对象引用的容器(如数组、集合等)来实现。
示例代码:
public class Main { public static void main(String[] args) { Person[] persons = new Person[1]; persons[0] = new Person("Alice"); changeName(persons); System.out.println(persons[0].getName()); // 输出 "Bob" } public static void changeName(Person[] p) { p[0].setName("Bob"); } } 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; } }
通过上述两种方式,Java中的对象可以作为参数进行传递,并且可以在方法内部对对象进行修改。