Giá trị hashCode của Chuỗi Java được tính là ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Có bất kỳ trường hợp nào (giả sử phiên bản JVM, nhà cung cấp, v.v.) theo đó biểu thức sau sẽ đánh giá là sai?
boolean expression = "This is a Java string".hashCode() == 586653468
Cập nhật # 1: Nếu bạn cho rằng câu trả lời là "có, có những trường hợp như vậy" - thì vui lòng cho một ví dụ cụ thể khi "Đây là một chuỗi Java" .hashCode ()! = 586653468. Hãy cố gắng cụ thể / cụ thể càng tốt
Cập nhật # 2: Chúng ta đều biết rằng việc dựa vào các chi tiết triển khai của hashCode () nói chung là không tốt. Tuy nhiên, tôi đang nói cụ thể về String.hashCode () - vì vậy vui lòng giữ câu trả lời tập trung vào String.hashCode (). Object.hashCode () hoàn toàn không liên quan trong bối cảnh của câu hỏi này.