Javaのオブジェクトをパラメーターとして渡す方法は何ですか?

Javaでは、オブジェクトを引数として渡す方法には、値渡しと参照渡しがあります。

  1. 値渡し(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;
    }
}
  1. 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のオブジェクトをパラメータとして渡すことができ、またメソッド内でオブジェクトを変更することもできます。

bannerAds