Java에서 String형 데이터의 비교방법이 두가지가 있다. 하나는 값만 비교하는 equals()
함수이고, 다른 하나는 산술연산자 ==를 이용한 비교이다. 각각의 비교가 서로 어떻게 다른지 비교해보겠다.
1 | String str1 = new String("string"); |
이렇게 2개의 String형 변수를 선언했고, 이제 이 변수들을 2가지 방법으로 비교할 것이다.
1 | String str1 = new String("string"); |
1 | // 출력 결과 |
equals()
함수를 통한 비교는 예상한대로 true를 반환하여 출력했는데, str1==str2
은 false가 반환되어 출력되었다. 이유는 equals()
함수는 값만 비교를 했지만, 산술연산자 == 는 객체 주소값을 비교했기 때문이다.
str1과 str2의 객체 주소값을 확인하는건 System.identityHashCode()
를 통해서 알 수 있다.