01/10/2018, 10:04
Final argument in java
mọi người cho em hỏi là trên web thì nói là tham số final không thể thay đổi giá trị khi đã truyền vào phương thức nhưng khi em code thì rõ ràng là nó đã thay đổi giá trị. Mọi người chỉ cho em biết nguyên nhân này với ạ
Bài liên quan
Why can final object be modified?
Khai báo final cho biến kiểu implicit (int, long, float …) thì giá trị sẽ không thể thay đổi.
Còn khai bảo final cho thể hiện của 1 object thì sẽ không khởi tạo lại được thể hiện đó (tức là không thể cấp phát vùng nhớ mới cho thể hiện đó, không thể gọi được constructor cho thể hiện đó ngoại trừ lúc khai báo). Còn các field vẫn có thể thay đổi giá trị được (trừ trường hợp các field ở trong cũng khai bảo final).
Từ khóa final giúp biến không thể thay đổi giá trị của nó dù có là tham số hay không, nếu biến là một object thì điều đó đảm bảo địa chỉ (reference) của biến đó không thể thay đổi.
Có nghĩa là bạn không thể gán cho nó một object mới nhưng hoàn toàn có thể thay đổi các thuộc tính trong class
VD:
cảm ơn các anh nhé, giờ thì em đã hiểu rồi