溫馨提示×

java對象怎么作為參數(shù)傳遞

小億
137
2024-01-09 09:38:25
欄目: 編程語言

Java中,對象作為參數(shù)傳遞的方式有兩種:按值傳遞和按引用傳遞。

  1. 按值傳遞(Pass-by-Value):當對象作為參數(shù)傳遞時,實際上傳遞的是對象的引用(地址),而不是對象本身。在方法內(nèi)部,形參接收到的是對象引用的一個副本,即形參和實參指向同一個對象。如果在方法內(nèi)部修改了對象的屬性,實際上是修改了同一個對象,所以會影響到方法外部的對象。

示例代碼:

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. 按引用傳遞(Pass-by-Reference):在Java中,對象本身是按值傳遞的,但是對象的引用是可以通過修改對象引用的值來實現(xiàn)傳遞的。這種方式可以通過定義一個包含對象引用的容器(如數(shù)組、集合等)來實現(xiàn)。

示例代碼:

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中的對象可以作為參數(shù)進行傳遞,并且可以在方法內(nèi)部對對象進行修改。

0