String Builder

모르는개산책·2024년 2월 27일

혼공

목록 보기
2/4

잦은 변경이 필요할 경우 String은 속도가 느리고 부담이 될 수 있어 StringBuilder를 사용하라는 말을 종종 봄.

String은 왜 느리고 부담스러운 존재인가?

String 과 String Builder의 차이

  • String은 변경 불가능, 추가할때마다 새로운 String을 만들고 이전 String은 garbage가 됨
  • 새로운 String을 만들 때 마다 hip memory를 allocation 받아야 하므로 속도가 느리고 서버에 부담이 된다. 또한 garbage가 발생하므로 메모리 절약 측면에서도 좋지 못함
    ⇒ 이러한 단점 극복 위해 String builder 사용

String Builder로 String 생성하기

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("문자열 ").append("연결");
// String str = stringBuilder;   
// String에 StringBuilder를 그대로 넣을 순 없다. toString()을 붙여야 한다
String str = stringBuilder.toString();

// 두 println()은 같은 값을 출력한다
System.out.println(stringBuilder);
System.out.println(str);
  • appand() 메소드
    1. StringBuilder의 객체를 생성
    2. 객체.append(”문자열”)로 객체에 문자열 생성
    3. String 변수에 넣을 때는 toString() 메소드 사용하여 String 객체로 변환

String Builder 주요 메소드

  • 생성자
    • StringBuilder sb = new StringBuilder(): 객체 선언
    • StringBuilder sb = new StringBuilder("aaa"): 문자열을 바로 넣을 수도 있다.
  • 주요 메소드
    • .append(): 문자열을 추가한다. ( sb.append("bbb"), sb.append(4) )
    • .insert(int offset, String str): offset 위치에 str을 추가한다. (sb.insert(2, "ccc"))
    • .replace(): 첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다. (.replace(3, 6, "ye"))
    • .substring(int start, (int end)): 인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱 (sb.substring(5), sb.substring(3, 7))
    • .deleteCharAt(int index): 인덱스에 위치한 문자 하나를 삭제한다. (sb.deleteCharAt(3))
    • .delete(int start, int end): start 부터 end-1 까지의 문자를 삭제한다. (sb.delete(3, sb.length()))
    • .toString(): String으로 변환한다. (sb.toString())
    • .reverse(): 해당 문자 전체를 뒤집는다. (sb.reverse())
    • .setCharAt(int index, String s): index 위치의 문자를 s로 변경
    • .setLength(int len): 문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제
    • .trimToSize(): 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨
  • 출처
    1. https://onlyfor-me-blog.tistory.com/317
    2. https://da2uns2.tistory.com/entry/Java-StringBuilder-사용법과-주요-메소드

0개의 댓글