2024.05.28.화.TIL 내일배움캠프 30일차 <StringBuilder 란 무엇일까>

김기남·2024년 5월 28일
0
post-thumbnail

오늘은 코드카타 문제를 풀기 위해 사용해본
StringBuilder 에 대해 심층적으로 알아보았습니다.

String 객체를 합쳐줘야 할 때, StringBuilder 를 사용하는 이유? 장점?

String은 변하지 않는 객체입니다.
한 번 생성되면 변경할 수 없기 때문에 + 연산자를 사용하여 문자열을 연결하면,
연결할 때마다 새로운 문자열 객체가 생성된다는 것을 의미합니다.
또한 이전에 있던 문자열은 JVM의 GC(가비지 컬렉터)가 처리하게 됩니다.

String 객체와 String 객체를 더하는 행위는 메모리 할당과 메모리 해제를 발생시키며,
더하는 연산이 많아진다면 비효율적으로 메모리를 소모합니다.

이러한 고충을 해결할 수 있는게 StringBuilder 입니다.
String은 변경 불가능한 문자열을 생성하지만 StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에,
String을 합치는 작업 시 하나의 대안이 될 수 있습니다.

StringBuilder 사용법

생성⬇️

StringBuilder sb = new StringBuilder();         //기본 생성자
StringBuilder sb = new StringBuilder(20);       //사이즈를 지정하여 생성
StringBuilder sb = new StringBuilder("hello");  //문자열을 인자로 받아 생성

문자열 추가⬇️

StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append("java");

특정 위치에 문자열 삽입⬇️

StringBuilder sb = new StringBuilder("he world");
sb.insert(2, "llo");    //2번 인덱스 위치에 문자열 삽입
System.out.println(sb);     //"hello world"

문자열 삭제⬇️

StringBuilder sb = new StringBuilder("hello");
sb.append(" world");
sb.delete(6, 9);      // 6번 인덱스부터 9번 인덱스의 전까지 삭제

특정 위치의 문자 삭제⬇️

StringBuilder sb = new StringBuilder("hello");
sb.append(" world");
sb.deleteCharAt(6);   //6번 인덱스 위치의 문자 삭제

문자열을 역순으로 리턴⬇️

StringBuilder sb = new StringBuilder("hello");
System.out.println(sb.reverse());     //"olleh"

특정 위치의 문자열을 문자열을 대체(replace)⬇️

StringBuilder sb = new StringBuilder("123456");
System.out.println(sb.replace(0, 1, "A"));        //A23456
System.out.println(sb.replace(0, 2, "A"));        //A3456

특정 위치의 문자열을 문자열을 변경(setCharAt)⬇️

StringBuilder sb = new StringBuilder("123456");
sb.setCharAt(0, '*');
System.out.println(sb.toString());    //*23456

문자열 자르기⬇️

StringBuilder sb = new StringBuilder("123456");
System.out.println(sb.substring(0, 2));    //1 2, 0번 인덱스부터 2번 인덱스의 전까지 

String으로 변환⬇️

StringBuilder sb = new StringBuilder("123456");
sb.toString();
profile
새로운 시작~!

0개의 댓글