Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa Constant (Hằng số) và biến Final trong Java

Constant (Hằng số) trong Java

Một biến constant có giá trị cố định và chỉ tồn tại một bản sao duy nhất trong toàn chương trình. Java không hỗ trợ constant trực tiếp như C/C++, nhưng bạn tạo được bằng cách khai báo static final.

  • static: Load vào bộ nhớ lúc compile time → chỉ có 1 bản sao (class-level).
  • final: Giá trị không thể thay đổi sau khi gán.

Ví dụ

class Data {
    static final int INTEGER_CONSTANT = 20;
}

public class ConstantsExample {
    public static void main(String args[]) {
        System.out.println("value of integerConstant: " + Data.INTEGER_CONSTANT);
    }
}
value of integerConstant: 20

Biến Final trong Java

Khi khai báo final, giá trị không thể thay đổi. Nếu gán lại → compile error.

Ví dụ

public class FinalExample {
    public static void main(String args[]) {
        final int num = 200;
        num = 2544; // Compile error
    }
}
FinalExample.java:4: error: cannot assign a value to final variable num

Sự khác biệt cốt lõi

Đặc điểmfinal (instance)static final (Constant)
Số bản saoMỗi object có 1 bản sao riêngChỉ 1 bản sao cho cả class
Truy cậpCần instance: obj.fieldTruy cập qua class: Class.FIELD
Bộ nhớHeap (mỗi object)Method Area / Metaspace (class)

Ví dụ minh họa sự khác biệt

class Data {
    final int instanceFinal = 20; // Mỗi object 1 bản sao
}

public class ConstantExample {
    public static void main(String args[]) {
        Data obj1 = new Data();
        Data obj2 = new Data();
        System.out.println(obj1.instanceFinal); // 20
        System.out.println(obj2.instanceFinal); // 20 - nhưng là 2 bản sao riêng biệt
    }
}

Kết luận: Để tạo constant đúng chuẩn (1 bản sao, không đổi), phải dùng static final. Theo convention, tên constant viết HOA_UNDERSCORE: MAX_SIZE, DEFAULT_TIMEOUT.