코딩일상
[JAVA] stringBuilder란?? 본문
작성하게 된 이유
프로그래머스에서 문제를 풀고 나면 다른 사람의 풀이를 볼 수 있는 데
거기서 대부분 stringBuilder라는 것을 사용하길래 뭐길래 다들 이렇게 사용한 지 궁금하여
정리하게 되었다.
StringBuilder 예시
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
// 요소 추가
sb.append("Hello");
System.out.println(sb);//Hello
sb.append("World");
System.out.println(sb);//HelloWorld
// 문자열 가져오기
String str = sb.toString();
System.out.println(str);//HelloWorld
// 문자열 삭제
sb.delete(0, 5);
System.out.println(sb);//World
// 문자열 치환
sb.replace(0, 5, "Goodbye");
System.out.println(sb);//Goodbye
// 문자열 뒤에 추가
sb.insert(1, "my");
System.out.println(sb);//Gmyoodbye
}
StringBuilder란??
String은 소위 불변(immutable) 객체이다. 한 번 생성된 String은 내용을 바꿀 수 없다는 뜻이다.
그러므로 String객체와 String 객체를 더하면(+) 새로운 문자열이 생성되고(문자열 병합, 변경, 삭제 등)
이는 메모리 할당과 메모리 해제를 발생시켜 연산이 많아질수록 성능적으로 좋지 않다.
그래서 나온 것이 StringBuilder이다.
StringBuilder 클래스는 Java의 기본 String 클래스보다 빠르고 효율적으로 문자열을 관리할 수 있는 방법을 제공합니다.
StringBuilder는 기본 String 클래스가 제공하지 않는 기능들도 제공합니다.
StringBuilder는 내부적으로 늘어나는 문자열을 저장하기 위해 메모리의 버퍼를 확보합니다.
따라서 문자열이 일정량을 넘어가면, 버퍼를 자동으로 새로 할당합니다.
따라서 문자열 연산을 수행하는데 시간이 오래 걸리는 것을 방지할 수 있습니다.
String과 StringBuilder의 차이
String은 문자열의 내용이 변경되지 않기 때문에 메모리 효율성이 좋지만,
StringBuilder는 내용이 변경될 수 있기 때문에 메모리 효율성이 떨어진다.
두 객체 모두 문자열 병합, 변경, 삭제 등의 기능을 제공하지만,
StringBuilder는 이러한 기능을 더 빠르게 처리할 수 있다.
따라서, 문자열이 변경되는 빈도가 높은 경우 StringBuilder를 사용하는 것이 바람직하다.
'개발 공부 > JAVA' 카테고리의 다른 글
JAVA Instant 와 LocalTime, LocalDateTime(+ZonedDateTime, OffsetDateTime) (0) | 2023.06.10 |
---|---|
[Java]Collections 이란??? (0) | 2023.02.17 |
[JAVA] 생활코딩 자바 편 완강후기(직장인의 코딩공부후기) (0) | 2022.04.24 |
[JAVA] 클래스 와 인스턴스 객체 지향언어!! (0) | 2022.04.23 |
[JAVA]매소드?? 좀더 깔끔하게!![직장인의 생활코딩 공부후기] (0) | 2022.04.23 |