String 끼리 '+' 연산을 하여 새로운 문자열을 만들어 내는 방법은 효율성이 좋지 않다. 왜냐하면
String s = "abc";
s += "def";
라고 했을 때, s 는 "abc" 였다가 "abcdef" 로 초기화 되는데, 이 과정에서 s 는 기존에 참조하던 "abc"의 참조값을 버리고 새로운 String 객체 ("abcdef") 를 참조하게 되는 것이다. 따라서 잦은 문자열 변경 작업이 필요하다면 StringBuilder를 사용하는 것이 좋다.
StringBuilder는 내부 버퍼(데이터를 저장하는 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 잡업을 하도록 설계되어 있다. 따라서 String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있따. StringBuilder가 제공하는 메서드는 다음과 같다.
리턴타입 | 메서드(매개변수) | 설명 |
StringBuilder | append(기본값 | 문자열) | 문자열을 끝에 추가 |
StringBuilder | insert(위치, 기본값 | 문자열) | 문자열을 지정 위치에 추가 |
StringBuilder | delete(시작 위치, 끝 위치) | 문자열 일부를 삭제 |
StringBuilder | replace(시작 위치, 끝 위치, 문자열) | 문자열 일부를 대체 |
String | toString() | 완성된 문자열을 리턴 |
toString() 을 제외한 다른 메서드는 StringBuilder를 다시 리턴하기 때문에 메서드 체이닝 패턴을 사용할 수 있다.
<EX>
//..JAVA
String data = new StringBuilder()
.append("DEF") //data="DEF"
.insert(0,"ABC") //data="ABCDEF"
.delete(3,4) //data="ABCEF"
.toString();
(복습용 포스트 입니다. 잘못된 정보는 코멘트 남겨주시면 감사하겠습니당)
'Java+Spring Boot' 카테고리의 다른 글
[Java] String 클래스 특징과 메서드 (0) | 2023.06.05 |
---|---|
[Java] 메모리 : 스택(stack)영역과 힙(heap)영역 (0) | 2023.06.02 |