在Java中,構造函數是一種特殊的方法,用于初始化對象的狀態。構造函數的參數傳遞方式主要有兩種:值傳遞和引用傳遞。
示例:
class MyClass {
int x;
MyClass(int x) {
this.x = x;
}
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass(10);
System.out.println("obj.x: " + obj.x); // 輸出:obj.x: 10
}
}
示例:
class MyClass {
int[] arr;
MyClass(int[] arr) {
this.arr = arr;
}
}
public class Main {
public static void main(String[] args) {
int[] originalArr = {1, 2, 3};
MyClass obj = new MyClass(originalArr);
System.out.println("Original array: " + Arrays.toString(originalArr)); // 輸出:Original array: [1, 2, 3]
System.out.println("obj.arr: " + Arrays.toString(obj.arr)); // 輸出:obj.arr: [1, 2, 3]
}
}
需要注意的是,盡管引用傳遞在處理對象時看起來像是傳遞了對象本身,但實際上仍然是傳遞的對象引用的副本。因此,在構造函數中對參數所做的修改會影響到原始對象,但這并不意味著可以直接修改原始對象的狀態。要避免這種情況,可以使用不可變對象或深拷貝來確保原始對象的狀態不會被意外修改。