[Java] ==와 equals의 차이점

지인·2023년 6월 21일
0

Java

목록 보기
2/7
post-thumbnail

🐰 ==와 equals

  • ==와 equals는 비교한 값을 boolean type으로 반환한다는 공통점을 가지고 있다.

== 연산자

비교하고자 하는 대상의 주소값을 비교한다. 그래서 비교하는 객체가 동일한 객체인지를 판별한다.

  • '같은 곳을 가리키고 있나?'를 확인한다. 같은 곳을 가리키면 값이 같다라는 뜻이기 때문
  • 같은 곳을 가리키고 있기 때문에 주소값이 같아 true가 반환된다.
int p1 = 1;
int p2 = 1;


equals 메서드

비교하고자 하는 대상의 값 자체를 비교한다.

new 연산자

  • new를 통해 String을 생성하면 Heap 영역에 존재하게 된다.
  • 새로운 문자열을 선언했기 때문에 다른 곳을 가리킨다.
  • 서로 다른 문자열을 참조하지만 값 자체는 같기 때문에 o1 == o2는 false가 반환되고 o1.equals(o2)는 true가 반환된다.
String o1 = new String("java")
String o2 = new String("java")

리터럴

  • 리터럴을 사용하게 되면 string constant pool이라는 영역에 존재하게 된다.
  • 같은 문자열을 참조하기 때문에 o3 == o4는 true가 반환되고 o3.equals(o4)도 true가 반환된다.
String o3 = "java2"
String o4 = "java2" 


🐰 ==와 equals의 차이점

  • == 연산자는 비교하는 두 대상의 주소값을 비교하고, equals 메소드는 대상의 값 자체를 비교한다.
  • Primitive Type인 경우 ==(동등 데이터 타입)를 쓰고 Primitive Type이 아닌경우 equals()를 쓰는게 일반적이다.

참고

profile
열쩡

0개의 댓글