java 中两个 String 具有相同的 hashCode 使用 == 判断返回 false ?
高洛峰
高洛峰 2017-04-18 10:06:30
0
5
532
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(5)
刘奇

읽는 동안 조심하지 않았기 때문에 알아냈습니다.
StringhashCode 메서드를 다시 썼고, 해당 hashCode 값은 주소가 아닌 내용에 따라 결정됩니다.

巴扎黑

Java에서 String을 결정하기 위해 ==를 사용하는 것은 hashCode 대신 두 객체의 주소를 결정하는 것입니다. 두 개의 String 개체가 있고 두 개체 모두에 대해 new를 사용하므로 ==를 사용하는 것은 false입니다.

巴扎黑
  1. hashCode와 ==는 다릅니다. ==는 메모리 주소를 비교하고 인스턴스 변수를 기반으로 hashCode를 계산합니다.

  2. 문자열 풀에서 "hello"를 직접 참조하는 대신 new를 사용하여 두 개의 String 인스턴스를 생성했습니다(new 키워드는 새 메모리 공간을 엽니다).

    으아아아

    String의 해시 계산 방식은 위 코드의 값과 해시를 기반으로 합니다.

大家讲道理

== 비교되는 것은 메모리 주소입니다. 해시와 등호는 문자열의 각 문자에서 거의 얻어집니다. 각 문자는 동일하고 해시는 동일하지만 메모리 주소가 다릅니다

洪涛

== 두 참조 변수가 동일한 객체를 가리키는지 여부를 결정합니다. 두 개체의 내용이 동일한 경우 해시 코드는 동일하지만 참조는 동일하지 않습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!