Nhìn vào lớp String
của Java, chúng ta có thể thấy mã băm được lưu trữ sau lần đánh giá đầu tiên.java String hashcode cơ chế lưu bộ nhớ đệm
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
Trường hợp hash
là một biến mẫu. Tôi có một câu hỏi, tại sao chúng ta cần h
biến phụ?
Nó được viết như thế này để đảm bảo rằng lớp 'String' là an toàn luồng. Bạn có thể đọc thêm về khái niệm này [ở đây] (https://en.wikipedia.org/wiki/Thread_safety) – Valy
Liên kết Wikipedia đó không giải thích đầy đủ những gì đang diễn ra ở đây hoặc tại sao. –