>Java >java지도 시간 >객체 비교에서 `==`와 `Equals()`의 차이점은 무엇입니까?

객체 비교에서 `==`와 `Equals()`의 차이점은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-26 02:14:11263검색

What's the Difference Between `==` and `Equals()` for Object Comparison?

==와 같음/같음의 차이점 이해

프로그래밍 언어에서 객체를 비교할 때 참조 동등성과 값 동등성을 구별하는 것이 중요합니다. 이러한 차이는 == 연산자와 Equals/equals 연산자 사이에서 발생합니다.

==

Java와 C# 모두에서 == 연산자(재정의되지 않는 한)는 다음을 수행합니다. 참조 평등. 두 개체가 동일한 메모리 위치를 공유하는지 여부를 평가합니다. 즉, ==는 객체가 동일한 인스턴스이면 true를 반환하고, 객체가 다른 인스턴스이면 false를 반환합니다.

같음/같음 값 평등

반대로, Equals/equals 메서드는 두 개체의 값을 비교합니다. Object 클래스의 기본 구현은 참조 동등성을 확인하지만 값 동등성을 구현하기 위해 파생 클래스로 재정의될 수 있습니다. 이는 객체가 서로 다른 인스턴스이지만 동일한 값을 갖는 경우에도 Equals/equals가 true를 반환할 수 있음을 의미합니다.

주요 차이점

Feature Reference Equality (==) Value Equality (Equals/equals)
Comparison Memory location Value
Overloading Not supported Supported in C# for some types
Null values Throws an exception if one object is null Treats null as an unequal value
Object class implementation Identity comparison Identity comparison
Potential for overrides No Yes

다음 Java를 고려해보세요. code:

String str1 = "Hello";
String str2 = new String("Hello");

System.out.println(str1 == str2); // false (reference equality)
System.out.println(str1.equals(str2)); // true (value equality)

이 예에서 ==는 false를 반환합니다. 왜냐하면 str1과 str2는 값이 동일하더라도 다른 인스턴스이기 때문입니다. 그러나 Equals는 값을 비교하기 때문에 true를 반환합니다.

결론

참조 동등(==)과 값 동등(Equals/equals)의 차이점을 이해하는 것이 중요합니다. Java 및 C#의 정확한 객체 비교. 이러한 연산자를 적절하게 활용하면 올바른 동작을 보장하고 코드에서 예상치 못한 결과를 방지할 수 있습니다.

위 내용은 객체 비교에서 `==`와 `Equals()`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.