Nếu bạn chỉ ra bất kỳ biến nào là cuối cùng, điều đó có nghĩa là bạn không muốn giá trị nó chứa trong bộ nhớ thay đổi. Trong trường hợp các kiểu nguyên thủy, giá trị đó được đại diện bởi các biến là các giá trị thực tế. Trong trường hợp các kiểu đối tượng, các giá trị trong bộ nhớ là các tham chiếu đến đối tượng và không phải là các đối tượng thực tế.
Ví dụ, bạn có:
final int x = 7;
final Object y = new Object();
Bạn có thể nghĩ về những dữ liệu được đại diện trong bộ nhớ theo cách này:
+----------+----------+
| block | value |
+----------+----------+
| 1001 | 7 |
| 1002 | 2110 |
+----------+----------+
Vì mục đích của cuộc thảo luận, chúng ta hãy bỏ qua các chi tiết như thế nào Java thực sự quản lý bộ nhớ (vì tôi cũng không biết nhiều về nó). Vì vậy, trong ví dụ trên, khối 1001 được biểu thị bằng biến x và 1002 theo y. Cả hai đều là các biến cuối cùng có nghĩa là các giá trị mà chúng đại diện không thể thay đổi. Trong trường hợp x, nó là 7, là giá trị thực tế, nhưng trong trường hợp y, 2110 chỉ là một tham chiếu đến một vị trí bộ nhớ khác. Cả hai không thể thay đổi nhưng lý do biến nguyên thủy trở thành hằng số là chúng đại diện cho giá trị thực tế. Nhưng trên thực tế, bạn có thể nói tương tự cho các biến loại đối tượng quá chỉ rằng các hằng số mà chúng đại diện là các tham chiếu. Do đó, từ khóa cuối cùng là là khá phù hợp trong lĩnh vực này.
Vì vậy, với các biến cuối cùng, nếu chúng là các kiểu nguyên thủy, chúng sẽ liên tục đại diện cho bất kỳ giá trị cụ thể nào bạn đặt chúng. Nếu chúng là các kiểu đối tượng/tham chiếu, chúng sẽ liên tục trỏ đến bất kỳ đối tượng nào mà bạn trỏ đến (bất kể sự biến đổi của đối tượng).
Nguồn
2012-06-29 11:26:03
Vì vậy, về cơ bản việc này không cho phép gán một đối tượng mới của đối tượng? Còn những thứ khác như: 'Image img = loadImage (" img.png ");'. sau đó bạn có thể làm: 'img = loadImage (" image.png ");'? hoặc điều này sẽ là bất hợp pháp? –
@LinkTheProgrammer bạn nghĩ sao? – NimChimpsky