본문 바로가기
언어/JAVA

[JAVA]자바 문자비교

by steadyMan 2020. 12. 8.

String 문자열 비교 시 사용되는 함수들과 정확한 비교를 위한 방법을 학습하고 정리합니다.

String test = "test";
String test01 = "test";
String test2 = new String("test");

위 변수들은 할당된 값은 같지만 주소는 다릅니다.

 

test는 jvm heap메모리영역에 인스턴스가 생성되고 값은 test를 가지고 있고

 

test2는 jvm의 상수풀이라는 공간에 test2를 만듭니다. 

 

test01은 test와 같은 메모리 영역에 존재하기 때문에 주소 값이 같습니다. 

 

자바에서 비교를 할때 다양한 연산자(==, != ...)를 사용하는데

이는 주소 값을 비교하기 때문에 정확한 비교가 불가능합니다.

 

EX)test == test2 연산자 false를 리턴합니다. 

 

이유는 할당된 문자열은 같지만 주소가 다르기 때문입니다. 

 

그래서 할당된 데이터를 비교를 해야한다면 

 

equals() 혹은 contentEquals() 함수를 사용합니다. 

String test = "test";
String test2 = new String("test");
StringBuffer buffer = new StringBuffer("test");

test.equals(test2); // true
test.equals(buffer); // false

contentEquals() 함수는 StringBuffer와 값을 비교할 때 사용합니다. 

String test = "test";
StringBuffer buffer = new StringBuffer("test");

test.equals(buffer); // false
test.contentEquals(buffer) // true

댓글