본문 바로가기
  • 시 쓰는 개발자
1일 1개념정리 (24년 8월~)/Java

1일1개 (20) - ==와 equals()의 차이

by poetDeveloper 2024. 8. 29.
반응형

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#20. '=='와 'equals()'의 차이

Java에는 equals 메소드로도 객체를 비교할 수 있는데, 등호 2개와 무슨 차이일까 ?? 두개의 차이에 대해 가볍게 알아보자.

한줄요약 : ==은 객체 메모리 주소를 비교, equals는 객체 내부 값을 비교함.

 

== 연산자

두 객체의 참조값을 비교한다. 즉, 객체의 메모리 주소를 비교하므로 동일한 메모리 위치를 참조하는지 확인할 때 사용한다.

Person a = new Person(25);
Person b = new Person(25);

if (a == b)
    System.out.println("a와 b는 같은 객체를 참조"); 
else
    System.out.println("a와 b는 다른 객체를 참조"); // 다른 객체이므로 요기 출력

 

출력 결과는 어떻게 될까 ? 당연히 a, b는 서로 다른 객체이므로 다른 객체라고 나오게 된다.

equals() 메소드

두 객체의 "내용"을 비교한다. 즉, 두 객체 내부의 값이 서로 같은지 확인한다. equals()는 Object 클래스에 정의되어 있어서 필요에 따라 하위 클래스에서 오버라이드될 수 있다.

Person a = new Person(25);
Person b = new Person(25);

if (a.equals(b))
    System.out.println("a와 b의 값이 같다."); // 값이 같으니까 여기 출력
else
    System.out.println("a와 b의 값이 다르다.");

 

출력 결과는 서로 같은 값을 가지고 있으므로 True가 되어 같다고 출력한다.

정리

  • == : 두 객체가 동일한 메모리 주소를 가리키는지 확인
  • equals() : 두 객체의 값이 동일한지 확인

 

반응형