Truyền giá trị và tham chiếu trong Java
Truyền giá trị và tham chiếu là gì? Nguyên lí hoạt động như thế nào? Mời bạn đọc cùng eLib tìm hiểu qua bài viết dưới đây.
Mục lục nội dung
1. Truyền giá trị là gì?
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.
2. Ví dụ về gọi bởi giá trị trong Java
Trong trường hợp gọi bởi giá trị, giá trị ban đầu không bị thay đổi. Bạn theo dõi ví dụ đơn giản sau:
class Vidu {
int data = 50;
void change(int data) {
data = data + 100; //cac thay doi se chi o trong bien cuc bo
}
public static void main(String args[]) {
Vidu op = new Vidu();
System.out.println("Truoc khi thay doi " + op.data);
op.change(500);
System.out.println("Sau khi thay doi " + op.data);
}
}
Chạy chương trình Java trên sẽ cho kết quả dạng:
Output:Truoc khi thay doi 50
Sau khi thay doi 50
3. Ví dụ khác về việc truyền tham chiếu
Trong gọi bởi tham chiếu, giá trị ban đầu bị thay đổi nếu chúng ta tạo thay đổi trong phương thức được gọi. Nếu chúng ta truyền đối tượng thay cho bất cứ giá trị kiểu gốc nào, thì giá trị ban đầu sẽ bị thay đổi. Trong ví dụ này, chúng ta đang truyền đối tượng như là giá trị. Bạn theo dõi ví dụ đơn giản sau:
class Vidu2 {
int data = 50;
void change(Vidu2 op) {
op.data = op.data + 100; //Cac thay doi se la trong bien instance
}
public static void main(String args[]) {
Vidu2 op = new Vidu2();
System.out.println("Truoc khi thay doi " + op.data);
op.change(op); //truyen doi tuong
System.out.println("Sau khi thay doi " + op.data);
}
}
Output:Truoc khi thay doi 50
Sau khi thay doi 150
Trên đây là bài viết về truyền giá trị và tham chiếu giá trị trong Java của eLib.VN. Để hiểu rõ hơn phương thức hoạt động của cách gọi giá trị thì bạn đọc nên tham khảo nhiều tài liệu và thực hành nhiều hơn nữa nhé. Chúc các bạn thành công!
Tham khảo thêm
- doc Đối tượng và lớp (class) trong Java
- doc Phương thức trong Java
- doc Nạp chồng phương thức trong Java
- doc Constructor trong Java
- doc Từ khóa static trong Java
- doc Từ khóa this trong Java
- doc Tính kế thừa trong Java - Từ khóa extends và implements trong Java
- doc Ghi đè phương thức trong Java
- doc Kiểu trả về covariant trong Java
- doc Từ khóa super trong Java
- doc Từ khóa final trong Java
- doc Tính đa hình trong Java
- doc Gắn kết tĩnh và Gắn kết động (Dynamic Binding) trong Java
- doc Toán tử instanceof trong Java
- doc Tính trừu tượng trong Java
- doc Abstract Class trong Java
- doc Interface trong Java
- doc Phân biệt lớp abstract và Interface trong Java
- doc Package trong Java
- doc Các kiểu Modifier trong Java
- doc Access Modifier trong Java
- doc Non Access Modifier trong Java
- doc Tính đóng gói trong Java
- doc Lớp Object trong Java
- doc Nhân bản đối tượng trong Java
- doc Mảng (Array) trong Java
- doc Lớp Wrapper trong Java
- doc Từ khóa strictfp trong Java
- doc Regular Expression trong Java