Mọi lập trình viên Java có thẩm quyền đều biết rằng bạn cần sử dụng String.equals () để so sánh một chuỗi, thay vì == vì == kiểm tra sự bằng nhau tham chiếu.
Khi tôi đang xử lý các chuỗi, hầu hết thời gian tôi đang kiểm tra sự bình đẳng giá trị hơn là sự bình đẳng tham chiếu. Đối với tôi, dường như sẽ trực quan hơn nếu ngôn ngữ cho phép so sánh các giá trị chuỗi bằng cách chỉ sử dụng ==.
Để so sánh, toán tử C = 's == kiểm tra sự bằng nhau về giá trị cho chuỗi s. Và nếu bạn thực sự cần thiết để kiểm tra sự bằng nhau tham chiếu, bạn có thể sử dụng String.ReferenceEquals.
Một điểm quan trọng khác là Chuỗi là bất biến, do đó không có hại gì khi thực hiện bằng cách cho phép tính năng này.
Có bất kỳ lý do cụ thể tại sao điều này không được triển khai trong Java không?
==
toán tử chỉ ánh xạ tới Equals
nếu ==
toán tử được thực hiện theo cách đó. Hành vi mặc định cho ==
giống như ReferenceEquals
(thực tế, ReferenceEquals
được định nghĩa là phiên bản đối tượng của ==
)
==
bình đẳng đối tượng vàeq
là đẳng thức tham chiếu ( ofps.oreilly.com/title/9780596155957/ Lỗi ).