본문 바로가기
[JAVA]/JAVA 기본

자바에서의 문자열 비교 ==, equals의 차이

by 황원용 2023. 3. 24.
728x90

String 변수 생성 시 주소 할당 방법

1. 리터럴(literal)을 이용한 방식

String str1 = "hello"; // literal
  • Heap 영역의 string constant pool이라는 영역에 저장된다.

 

2. new 연산자를 이용한 방식

String str2 = new String("hello"); //new 연산자
  • Heap 영역에 저장된다.

 

 

주소값 비교(==)와 값 비교(equals)

== 연산자

  • 비교하고자 하는 두 대상의 주소값을 비교한다.

 

equals 메서드

  • String 클래스의 메서드로 비교하고자 하는 두 대상의 값 자체를 비교한다.
  • 기본 타입(int, char) 등은 Call by value 형태로 기본적으로 대상의 주소값을 가지지 않지만, String은 일반적인 타입이 아니라 클래스이므로 Call by Reference 형태로 생성 시에 주소값이 부여된다. 따라서, 같은 값을 가지더라도 서로 다른 주소값을 가질 수 있다.

 

 

 

참고

https://sudo-minz.tistory.com/93

728x90