[java] StringBuilder

한지개·2023년 1월 27일

java

목록 보기
4/9

String

String 객체는 수정 불가능한 문자열을 생성
-> 한 번 생성되면 내용 못 바꿈

String s = new String("Hello");
String t = s.concat("World");

s.concat("World"); 의 실행해도 String s는 변경되지 않음

한 번 만들어진 String 객체는 수정이 불가하기 때문에 문자열을 변경하기 위해선 다음과 같이 해야 함.

s = s.concat("Java");

그렇게 되면 가비지 객체가 생성됨.
가비지는 더 이상 참조되지 않음 -> 가비지가 차지하는 메모리 공간 회수 되어야 함.
만약 위 작업을 100만 번 수행한다면 그만큼 가비지가 늘어나며 최악의 경우 가용 메모리가 0이 되어 자바 응용프로그램을 더 이상 실행할 수 없게 됨.
(근데 이런 극한의 상황은 잘 일어나지 않음ㅎ)


대안 ->

StringBuilder

StringBuilder 객체는 수정 가능한 문자열을 생성

생성자

// 객체 선언
StringBuilder sb = new StringBuilder();

// 문자열 넣은채로 선언 가능
StringBuilder sb = new StringBuilder("HelloWorld");

주요 메소드

메서드내용
append(String str)문자열을 추가
insert(int offset, String str)offset 위치에 str을 추가
replace()첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체
substring(int start)start부터 끝까지 인덱싱
substring(int start, int end)start부터 end-1까지 인덱싱
deleteCharAt(int index)인덱스에 위치한 문자 하나를 삭제
delete(int start, int end)start 부터 end-1 까지의 문자를 삭제
toString()String으로 변환
reverse()해당 문자 전체를 뒤집음
setCharAt(int index, String s)index 위치의 문자를 s로 변경
setLength(int len)문자열 길이 조정
현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제
trimToSize()문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정
String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨

사용 예시
프로그래머스 lv.0 문자열 뒤집기
append(String str)
reverse()
toString()

import java.util.*;

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        // StringBuilder 객체 선언
        StringBuilder sb = new StringBuilder();
        
        // 선언부에서 
        //StringBuilder sb = new StringBuilder(my_string); 로 대체 가능
        // 문자열을 추가해 줌
        sb.append(my_string);
        
        // 문자열을 뒤집어 줌
        sb.reverse();
        
        // String으로 변환해 줌
		answer = sb.toString();
        
        return answer;
    }
}
profile
평생 소원이 누룽지

0개의 댓글