Identity and equality
동일성과 동등성의 차이
동일성
동일성은 두 객체가 완전히 같은 객체인지, 즉 같은 메모리 주소를 가르키고 있는지를 의미합니다.
비교 방법: 자바에서 동일성을 확인할때는 '==' 연산자를 사용합니다. 두 객체의 참조(메모리 주소)를 비교하여, 같은 객체를 참조하고 있을 때 'True'를 반환합니다.
동등성
동등성은 두 객체가 논리적으로 같은지, 즉 내용이 동일한지를 의미합니다.
비교 방법: 자바에서는 'equals()' 메서드를 사용하합니다. 두 객체의 내용(논리적 동등성)이 동일하면, 'True'를 반환합니다.
==
연산자와 equals()
메서드의 차이:
==
연산자와 equals()
메서드의 차이:==
연산자:두 객체의 **참조(메모리 주소)**를 비교합니다.
원시타입에서는 실제 값 자체를 비교하지만, 참조타입에서는 객체의 메모리 주소를 비교합니다.
equals()
메서드:두 객체의 **내용(논리적 동등성)**을 비교합니다.
자바의
Object
클래스에서 제공되는 메서드로, 기본적으로 객체의 참조를 비교하도록 구현되어 있지만,String
,Integer
등은 이를 재정의하여 객체의 값을 비교할 수 있도록 합니다.
질문
Q. 자바에서 String
클래스의 equals()
메서드는 어떻게 동작하나요? 이 메서드는 어떤 방식으로 문자열의 동등성을 비교하며, 왜 String
클래스에서 equals()
메서드를 재정의했을까요?
동작 원리:
String
클래스의equals()
메서드는 먼저 비교 대상이 같은 타입(String
)인지 확인합니다.이후 두 문자열의 길이를 비교하고, 길이가 같다면 각 문자(char)들을 하나씩 비교합니다.
모든 문자가 동일하면
true
를 반환하고, 하나라도 다르면false
를 반환합니다.
기본적으로 Object
클래스의 equals()
메서드는 두 객체의 **참조(메모리 주소)**를 비교합니다. 그러나 String
클래스에서는 문자열의 내용을 비교하는 것이 더 유용하기 때문에, 이 메서드를 재정의하여 문자열 비교를 보다 직관적으로 사용할 수 있게 합니다.
Q.
Last updated