Just Do IT!

[Java] StringBuilder 사용하기 본문

개발 공부/Java

[Java] StringBuilder 사용하기

MOON달 2024. 7. 19. 11:09
728x90
반응형

StringBuilder란?

String은 불변(immutable) 객체라고 한다. 즉, 한 번 생성되면 변경할 수 없는 것이다.

+ 연산자를 사용하여 연결할 수는 있지만, 이는 새로운 문자열 객체가 생성된다는 것을 의미한다.

따라서 만약 String 객체를 더하거나 뒤집는 경우, 메모리 할당과 메모리 해제를 발생시키며 연산이 많아지만 성능이 좋지 않다.

 

그럴 때 사용하는 것이 바로 StringBuilder이다.

StringBuilder는 String과 다르게 mutable 하다. 즉, 값이 변할 수 있다.

새로운 객체를 생성하고 메모리를 할당하는 것이 아니라 기존의 데이터에서 변경되기 때문에 상대적으로 속도가 빠르고 부하가 적다.

 

따라서 긴 문자열을 사용하는 상황인 경우, StringBuilder 또는 StringBuffer를 사용하는 것이 좋다.

 

 

 

 

StringBuilder와 StringBuffer의 차이점

멀티스레드 환경에서 thread-safe 여부가 다르다.
StringBuffer thread-safe 하므로 여러 쓰레드에서 동시에 해당 문자열에 접근한다면 사용을 고려하고, 그렇지 않다면 StringBuilder를 사용하는 것이 성능에 더 유리하다. (성능과 thread-safe는 반비례라고 생각하면 된다.)

 

 

 

 

 

 

StringBuilder 사용하기

생성

StringBuilder sb = new StringBuilder();         //기본 생성자

StringBuilder sb = new StringBuilder(10);       //사이즈를 지정하여 생성

StringBuilder sb = new StringBuilder("hello");  //문자열을 인자로 받아 생성

메소드

  • .append() : 문자열 추가
  • .insert( , ) : 특정 위치에 문자열 삽입
  • .delete() : 문자열 삭제
  • .deleteChartAt() : 특정 위치의 문자 삭제
  • .reverse() : 문자열을 역순으로 출력
  • .replace( , , ) : 특정 위치의 문자열을 다른 문자열로 대체
  • .setCharAt() : 특정 위치의 문자열을 다른 문자열로 변경
  • .subString() : 문자열 자르기
  • .toString() : String으로 변환

 

[예시]

문자열 뒤집기를 사용한 백준 - 상수

https://daydream-sy.tistory.com/321

 

[백준 Bronze II] 상수 - 2908 (Java)

import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); sc.close(); A = Integer.parseInt(new StringBuilder().append(A).reverse().toString()); B =

daydream-sy.tistory.com

 

728x90