Giả sử chúng ta có một lớp:Java phân bổ bộ nhớ cho một cá thể mới (với một thuộc tính String) như thế nào?
class Account {
String name;
int ID;
}
Sau đó
a1 = new Account();
a2 = new Account();
sẽ tạo ra 2 biến trỏ đến 2 vị trí bộ nhớ lưu trữ 2 trường hợp của class Account. Câu hỏi của tôi là làm thế nào Java có thể biết làm thế nào lớn các trường hợp này là để phân bổ bộ nhớ của họ (Bởi vì với loại String, chúng tôi có thể gán bất kỳ chuỗi nào. Ví dụ, a1.name = "Solomon I", a2.name = "Alan"
. Điều này sẽ dẫn đến kích thước khác nhau của từng trường hợp)
Vị trí bộ nhớ là chuỗi byte 'liên tục'. Vì vậy, nếu tôi có a1 = new Account()
thì a2 = new Account() => vị trí bộ nhớ a1 được cố định ('bộ nhớ đã sử dụng | a1 | a2') vậy điều gì sẽ xảy ra nếu tôi tạo a1.name là một chuỗi rất dài? Vị trí bộ nhớ của a1 sẽ mở rộng đến vị trí bộ nhớ của a2?
Cảm ơn bạn đã đọc nội dung này, vui lòng cho tôi biết nếu tôi có bất kỳ quan niệm sai lầm nào.
Cảm ơn bạn rất nhiều. Giải thích rõ ràng;) –