JAVA - String 객체간 비교

Java에서 String형 데이터의 비교방법이 두가지가 있다. 하나는 값만 비교하는 equals()함수이고, 다른 하나는 산술연산자 ==를 이용한 비교이다. 각각의 비교가 서로 어떻게 다른지 비교해보겠다.

1
2
String str1 = new String("string");
String str2 = "string";

이렇게 2개의 String형 변수를 선언했고, 이제 이 변수들을 2가지 방법으로 비교할 것이다.

1
2
3
4
5
String str1 = new String("string");
String str2 = "string";

System.out.println(str1.equals(str2));
System.out.println(str1==str2);
1
2
3
// 출력 결과
true
false

equals() 함수를 통한 비교는 예상한대로 true를 반환하여 출력했는데, str1==str2은 false가 반환되어 출력되었다. 이유는 equals() 함수는 값만 비교를 했지만, 산술연산자 == 는 객체 주소값을 비교했기 때문이다.

str1과 str2의 객체 주소값을 확인하는건 System.identityHashCode()를 통해서 알 수 있다.