Khi làm việc với Java, việc hiểu rõ cách truyền tham số vào phương thức là rất quan trọng, vì nó ảnh hưởng đến cách mà dữ liệu được xử lý trong chương trình. Hai khái niệm quan trọng liên quan đến việc truyền tham số là Pass by Reference và Pass by Value. Bài viết này sẽ giải thích chi tiết về hai khái niệm này và cách chúng hoạt động trong Java.
public class PassByValueExample { public static void main(String[] args) { int number = 5; System.out.println("Before method call: " + number); // In ra: 5 changeValue(number); System.out.println("After method call: " + number); // Vẫn in ra: 5 } public static void changeValue(int num) { num = 10; // Chỉ thay đổi giá trị của biến num, không ảnh hưởng đến number } }
class Person { String name; Person(String name) { this.name = name; } } public class PassByReferenceExample { public static void main(String[] args) { Person person = new Person("Alice"); System.out.println("Before method call: " + person.name); // In ra: Alice changeName(person); System.out.println("After method call: " + person.name); // In ra: Bob } public static void changeName(Person p) { p.name = "Bob"; // Thay đổi thuộc tính name của đối tượng person } }
Tiêu chí | Pass by Value | Pass by Reference |
---|---|---|
Định nghĩa | Truyền một bản sao của giá trị | Truyền địa chỉ của đối tượng |
Ảnh hưởng đến biến gốc | Không ảnh hưởng | Ảnh hưởng |
Kiểu dữ liệu | Áp dụng cho cả kiểu nguyên thủy và đối tượng | Chỉ áp dụng cho đối tượng |
Ví dụ | Thay đổi giá trị của biến nguyên thủy không ảnh hưởng đến biến gốc | Thay đổi thuộc tính của đối tượng ảnh hưởng đến biến gốc |
Java luôn sử dụng Pass by Value cho cả kiểu dữ liệu nguyên thủy và tham chiếu. Tuy nhiên, vì đối tượng được truyền dưới dạng tham chiếu, nên các thay đổi trên đối tượng sẽ được phản ánh bên ngoài phương thức. Việc hiểu rõ sự khác biệt này là cần thiết để lập trình viên có thể quản lý và xử lý dữ liệu một cách hiệu quả trong Java.