Javaのオブジェクトをパラメーターとして渡す方法は何ですか?
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;
}
}
- Javaにおいて、「参照渡し(Pass-by-Reference)」とは、オブジェクト自体は値渡しですが、オブジェクトの参照は、オブジェクト参照の値を変更することで実現できます。これは、オブジェクト参照を含むコンテナ(例えば、配列やコレクションなど)を定義することで実現できます。
サンプルコード:
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;
}
}
上記の2つの方法により、Javaのオブジェクトをパラメータとして渡すことができ、またメソッド内でオブジェクトを変更することもできます。