Câu hỏi

Pass by referencepass by value trong Java là gì?

Câu trả lời

Trong Java, cách thức truyền tham số vào phương thức (method) có thể được hiểu qua hai khái niệm: pass by value và pass by reference. Tuy nhiên, quan trọng là phải nhận biết rằng Java chỉ sử dụng pass by value.

Pass by Value

Khi truyền một tham số vào một phương thức, Java sao chép và truyền giá trị của tham số đó vào phương thức. Đối với các kiểu dữ liệu nguyên thủy (primitive types như int, float, double, v.v.), giá trị thực sự của biến được sao chép. Điều này có nghĩa là bất kỳ thay đổi nào đối với tham số trong phương thức sẽ không ảnh hưởng đến biến ban đầu ngoài phương thức.

Pass by Reference (Giả Lập)

Đối với các đối tượng, Java truyền giá trị của tham chiếu đến đối tượng, không phải đối tượng thực sự. Điều này thường gây nhầm lẫn và được nhiều người hiểu nhầm là pass by reference. Tuy nhiên, điều quan trọng cần nhớ là giá trị của tham chiếu (địa chỉ bộ nhớ của đối tượng) được sao chép và truyền vào phương thức. Nếu bạn thay đổi thuộc tính của đối tượng thông qua tham chiếu này, thì thay đổi sẽ ảnh hưởng đến đối tượng ban đầu. Tuy nhiên, nếu bạn cố gắng gán một đối tượng mới cho tham chiếu đó trong phương thức, tham chiếu ban đầu ngoài phương thức sẽ không bị thay đổi.

Ví dụ

public class Test {
    p...
Bạn cần đăng nhập để xem