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는 없다.