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는 없다.
'Java' 카테고리의 다른 글
자바란? (0) | 2021.03.31 |
---|---|
접근 제한자 (0) | 2020.10.31 |
다형성(오버로딩,오버라이딩) (0) | 2020.10.31 |
싱글톤(singleton)이란? (0) | 2020.10.31 |
자바 메모리 운영, static변수 (0) | 2020.10.31 |