Nếu chúng ta gọi một phương thức và truyền một giá trị cho phương thức đó được gọi là truyền giá trị. Việc thay đổi giá trị chỉ có hiệu lực trong phương thức được gọi, không có hiệu lực bên ngoài phương thức.
Khi chúng ta gọi một phương thức và truyền một tham chiếu cho phương thức đó được gọi là truyền tham chiếu. Việc thay đổi giá trị của biến tham chiếu bên trong phương thức làm thay đổi giá trị gốc của nó.
Hãy xem ví dụ để hiểu rõ hơn.
Ví dụ về việc truyền giá trị (pass by value) trong java
Trong ví dụ này, giá trị data không bị thay đổi sau khi gọi phương thức change()
public class Operation1 { int data = 50; void change(int data) { data = data + 100; } public static void main(String args[]) { Operation1 op = new Operation1(); System.out.println("Trước khi thay đổi: " + op.data); op.change(500); System.out.println("Sau khi thay đổi: " + op.data); } }
Output:
Trước khi thay đổi: 50 Sau khi thay đổi: 50
Ví dụ về việc truyền tham chiếu (pass by reference) trong java
Trong ví dụ này, giá trị của biến data của đối tượng op bị thay đổi sau khi gọi phương thức change()
public class Operation2 { int data = 50; void change(Operation2 op) { op.data = op.data + 100; } public static void main(String args[]) { Operation2 op = new Operation2(); System.out.println("Trước khi thay đổi: " + op.data); op.change(op); // truyền đối tượng System.out.println("Sau khi thay đổi: " + op.data); } }
Output:
Trước khi thay đổi: 50 Sau khi thay đổi: 150