본문 바로가기

Java

String(문자열)의 이해

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