String 자료형에 + 연산이 있을 때마다 새로운 String 객체가 생성된다(문자열 간 + 연산이 있는 경우 자바는 자동으로 새로운 String 객체를 만들어 낸다.
따라서 메모리에 효율적인 사용을 위해서 StringBuffer를 사용하기도 한다.
1. StringBuffer
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("this");
sb.append("is");
sb.append("String");
String result = sb.toString();
System.out.println(result);
2. String
String result = "";
result += "This";
result += "is";
result += "String";
System.out.println(result);
두개의 예제의 결과는 동일하지만 첫번째는 StringBuffer 객체는 한번만 생성되는 반면에
두번째는 String 자료형에 +연산은 result = result + "is"로 컴파일되어 매번 새 String 객체를 생성한다.
이는 반복문 안에서 사용되면 성능에 큰 영향을 줄 수 있다.
그렇다면 무조건 StringBuffer를 사용하는것이 좋은가?
그건 상황마다 다르다고 한다. 일반적으로 StringBuffer자료형은 String보다 무거운 편에 속하며
구체적으로 말하면, StringBuffer는 동기화(synchronized)가 되어 있어 멀티스레드 환경에 적합하지만
싱글스레드 환경에서는 불필요한 오버헤드가 발생할 수 있다.
따라서 문자열 추가나 변경등의 작업이 많을 경우에 StringBuffer를 그렇지 않는 경우는 그냥 String을
사용하는 것이 유리하다.
'Java' 카테고리의 다른 글
| Java - 대용량 데이터 적재 로직 설계시 유념할 사항 (0) | 2022.11.04 |
|---|---|
| Java - properties 파일이란 무엇인가? (0) | 2022.06.17 |
| Spring 스케쥴링 (@scheduled 어노테이션) 및 Cron표현식 (0) | 2022.03.30 |
| Java - 현재날짜 구하기 (jdk 1.8 이상) (0) | 2022.01.19 |
| try-with-resource 문 : Java - Try() catch : try뒤에 괄호는 뭘까? (0) | 2022.01.18 |