Just Do IT!
[Java] StringBuilder 사용하기 본문
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
'개발 공부 > Java' 카테고리의 다른 글
[Java] String을 int로, int를 String으로 변환하기 (0) | 2024.11.21 |
---|---|
[Java] TreeSet에서 custom 객체를 생성 후 ClassCastException 오류 (0) | 2024.07.24 |
[Java] StringTokenizer와 Split() 메서드 (0) | 2024.07.19 |
[Java] Scanner와 BufferedReader (0) | 2024.07.11 |
[Java warning] resource leak: 'sc' is never closed 해결방법 (1) | 2024.07.08 |