본문 바로가기

Java

자바 StringBuffer, StringBuilder

자바 StringBuffer, StringBuilder

StringBuilder와 StringBuffer는 자바 내에서 변하는 문자열을 처리하기 위해 사용된다.
가변의 성질을 가져 객체 생성을 한 번 하면 내부적으로 데이터를 변경하고 객체를 재활용하기 때문이다.

String 메소드 포스팅에서 잠깐 언급했지만 String 객체는 불변이라 연산 등으로 변화할 때마다 새로운 객체를 생성해낸다. 

StringBuilder는 StringBuffer와 같지만 동기화 처리를 지원하지 않아 좀더 빠르며, 사용되는 메소드는 같다. 
멀티쓰레드 상황이면 동기방식인 StringBuffer를 쓰고, 아니라면 싱글쓰레드라면 비동기방식인 StringBuilder를 사용한다.

객체선언은 이렇게 한다. (StringBuilder와 메소드가 동일하므로 StringBuilder는 생략)

StringBuffer sb = new StringBuffer();

생성자로 문자열을 곧바로 넣을 수도 있다.

StringBuffer sb1 = new StringBuffer("aaa");

.append() : 문자열을 추가한다.

sb.append("jump to java");

문자열뿐만 아니라 다른 자료형도 추가할 수 있다는 것이 장점.
sb.append(4);

.insert(int offset, String str) :
offset 위치에 str을 추가한다. 원래문자는 뒤로 밀리게 된다.
 sb.insert(0, "hello ");

.replace() : 
첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다.
sb.replace(0, 5, "yeah");

.substring(start, (end)) :
인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱한다.

System.out.println("Substring: "+sb.substring(5));

Substring: jump to java4

.deleteCharAt(int index):
인덱스에 위치한 문자 하나를 삭제한다.

sb.deleteCharAt(17);

.delete(start, end) :
start 부터 end-1 까지의 문자를 삭제한다.
sb.delete(12,sb.length());

.toString() :
String으로 변환한다.

 System.out.println(sb.toString());

yeah jump to

.reverse() : 
해당 문자 전체를 뒤집는다. 가끔 정렬 대신으로 쓸 수도 있는 메소드다. 

System.out.println(sb.reverse().toString());

ot pmuj haey


포스팅에 사용된 코드 전문.

StringBuilder_.java

public class StringBuilder_ {
      public static void main(String[] args) {
          
           StringBuffer sb = new StringBuffer();
            StringBuffer sb1 = new StringBuffer("aaa");
            sb.append("jump to java"); //추가하기
            sb.append(4); //int도 가능하다.
            
            // insert(int offset, String str) : offset 위치에 str 추가한다. 원래문자는 뒤로밀림
            sb.insert(0, "hello ");
            sb.replace(0, 5, "yeah"); //대체하기
            
            System.out.println("Substring: "+sb.substring(5)); //인덱싱
            
            //삭제하기
            sb.deleteCharAt(17); // index 위치에 있는 문자 하나를 삭제한다.
            sb.delete(12,sb.length()); //start 부터 end -1 까지의 문자를 삭제한다.
            
            System.out.println(sb.toString());
            //뒤집기
            System.out.println(sb.reverse().toString());
      }
}