Liên hệ
java

Kiểu tham chiếu và tham trị trong Java

Tìm hiểu khái niệm và cách thức hoạt động của kiểu dữ liệu tham chiếu reference type và kiểu dữ liệu tham trị value type với Java

Biến / tham số trong Java có hai kiểu, thứ nhất là kiểu giá trị và thứ hai là kiểu tham chiếu.

Tham số kiểu giá trị (Tham trị) trong Java

Kiểu này dành cho các biến, tham số khai báo kiểu dữ liệu cơ ban nguyên thủy gồm: byte, short, int, long, float, double, boolean, char

Kiểu này thì giá trị của biến được lưu chính xác tại địa chỉ bộ nhớ (nói cách khác địa chỉ bộ nhớ có lưu giá trị). Do vậy khi chuyển nó trong các tham số, các phép toán nó làm việc trên giá trí chứ không làm việc trên bản thân địa chỉ của biến trong bộ nhớ.

Xem ví dụ sau:

public class MyClass {
    static void addOneTo(int num) {
        num = num + 1;
    }

    public static void main(String[] args) {
        int x = 5;
        addOneTo(x);
        System.out.println(x);
    }

}
// Outputs "5"

Ở ví dụ trên, phương thức addOneTo() nhận tham số giá trị (kiểu int) là 5, chứ không phải nhận địa chỉ biến, nên bản thân biến ngoài hàm không bị tác động, vân là giá trị 5

Tham số kiểu tham chiếu trong Java

Tham số tham chiếu (Reference Type) nó lưu trữ bên trong nó một địa chỉ tham khảo (chứ không phải giá trị) mà địa chỉ đó sẽ dùng để truy cập bộ nhớ khi lưu / lấy dữ liệu của biến.

Khi bạn tạo ra đối tượng từ các lớp, bạn đã tạo ra một biến kiểu tham chiếu.

Hãy xem ví dụ sau, giả sử có lớp Person

public class Person {
    private String Name;
    private int Age;

    public Person(String name) {
        this.Name = name;
    }

    public void setAge(int age) {
        this.Age = age;
    }

    public int getAge() {
        return this.Age;
    }

}

Sử dụng lớp Person

public class MyClass {
    public static void main(String[] args) {
        Person j;
        j = new Person("John");
        j.setAge(20);
        celebrateBirthday(j);
        System.out.println(j.getAge());
    }

    static void celebrateBirthday(Person p) {
        p.setAge(p.getAge() + 1);
    }
}

//Outputs "21"

Bạn thấy phương thức celebrateBirthday nhận đối tượng Person làm tham số, do là đối tượng từ lớp mà tham số này là tham chiếu, nên khi phương thức thay đổi giá trị thuộc tính của đối tượng, thì đối tượng khai báo trong main thay đổi: bạn thấy xuất ra 25

Kiểu Array, String là tham chiếu

Vui lòng đăng ký ủng hộ kênh