Java

String(문자열)의 이해

홍헤세 2020. 10. 31. 17:19

String은 문자열이다.

문자열은 상수이다.

 

String str = "홍길동"; // string constant pool영역에 저장

String str2 = "홍길동";

String str3 = new String("홍길동"); //새로운 객체 -> heap area에 저장

 

이중에서 맞는것은?

1. str == str2

2. str == str3

 

답은 1번이다.

왜냐하면 == 연산자는 주소를 비교하기 때문에 str과 str2는 같은 메모리영역에 있어서 같다고 나오고

new String으로 새로운 객체를 만든 str3는 heap 영역에 저장되기 때문에 다르다고 나온다.

 

따라서 문자열을 비교할때는 == 연산자보다는 .equals()를 써준다.

단, 문자열이 자주 바뀌는 곳에는 String을 사용하지 않는다.

자주 바뀌면 StringBuffer나 StringBuilder를 써준다.

 

StringBuffer는 Thread Safe가 있고, Builder는 없다.