독도갈매기의 개발 블로그
[Java] 자바 문자열(String)을 비교하는 방법 본문
문자열 비교 '='이면 되는거 아닌가요?
네 맞습니다. 저희는 아래 코드처럼 비교를 한다면 원하는 결과를 얻을 수 있습니다.
public class Blog {
public static void main(String[] args) {
String a = "맞습니다.";
String b = new String("맞습니다.");
System.out.println(a == b); // false
}
}
위처럼 되는 이유는 자바에 있는 메모리 Heap영역이 존재하고 String
이 객체이기 때문입니다.
위 코드에서 일어나는 일을 보면 a에 '맞습니다'를 할당할 때 먼저 Heap영역에 같은 값을 가진 주소값을 탐색합니다.
같은 값을 가진 주소값이 있다면 그 주소값을 할당하는 것이죠 (주소값은 실제 값(맞습니다
)을 말하는것이 아닙니다.)==
은 주소값을 비교하기 때문에 new를 사용한 b
는 같은 값이더라도 새로운 공간을 할당받은것입니다.
하지만 그 이유만으로 이 둘은 값을 비교 할 수 없는 것일까요? 아닙니다.
우리가 위에서 쓴 ==
은 두 비교 대상의 주소값
을 비교하기 때문에 false
가 나오지만equals
메소드를 사용하게 된다면 오로지 값만 비교하기 때문에 주소값과 상관없이 true, false를 뱉습니다.
public class Blog {
public static void main(String[] args) {
String a = "맞습니다.";
String b = new String("맞습니다.");
System.out.println(a.equals(b)); // true
}
}
오늘은 여기까지 알아보고 다음에는 더 정재된, 정리된 글로 돌아오겠습니다.
'Java' 카테고리의 다른 글
[Spring] Spring은 왜 많이 쓰일까? -2- (0) | 2021.10.05 |
---|---|
[Spring] Spring은 왜 많이 쓰일까? -1- (3) | 2021.10.04 |
[Spring] 인터셉터 ( Interceptor ) (0) | 2021.10.01 |
[Spring] IoC ( Inversion of Control : 제어권 역전 ) (0) | 2021.09.30 |
[Spring] DI ( Dependency Injection : 의존성 주입 ) (0) | 2021.09.29 |
Comments