쌓고 쌓다

[JAVA] StringBuffer 클래스 본문

프로그래밍/java

[JAVA] StringBuffer 클래스

승민아 2022. 5. 22. 19:02

StringBuffer

  •  가변 스트링을 다루는 클래스이다.
  • String 클래스와 달리 문자열 변경이 가능하다.
  • ( String 객체의 변경은 실제로 변경되는 것이 아닌 새로 String객체를 만들어 반환함 ) -> garbage가 많이 발생
  • 가변 크기의 버퍼를 가지고 있어 문자열 수정 가능
  • 문자열의 수정이 많을때 적합

 

StringBuffer 예제 코드

public class Hongong {

    public static void main(String args[]){
        StringBuffer sb = new StringBuffer("This");

        sb.append(" is pencil."); // 문자열 뒤에 " is pencil." 추가
        System.out.println(sb); // sb.toString()으로 자동 변환

        sb.insert(7, " my"); // 인덱스 7에 "my" 삽입
        System.out.println(sb);

        sb.replace(8,10,"your"); // 범위 : [start,end)를 "your"로 대체
        System.out.println(sb);
    }
}

 

실행 결과

 

String과 StringBuffer 비교

결과부터 미리 말하자면 String 객체에 문자열을 덧붙였더니 새로운 객체가 만들어져 만들어진것이고

StringBuffer 객체에 append로 문자열을 붙였더니 원래 객체에 덧붙여진 문자열이다.

 

예제 코드

public class Hongong {

    public static void main(String args[]){
        String s = new String("This");
        StringBuffer sb = new StringBuffer("This");

        System.out.println(System.identityHashCode(s));
        System.out.println(System.identityHashCode(sb));

        // 각각 문자열 뒤에 "is pencil." 추가
        s=s.concat(" is pencil.");
        sb.append(" is pencil.");
        System.out.println("is pencil 추가 후...");

        System.out.println(System.identityHashCode(s));
        System.out.println(System.identityHashCode(sb));

    }
}

 

실행 결과

-> StringBuffer의 값은 그대로인걸 확인할 수 있다.

 

주요 메소드

메소드 설명
StringBuffer append(String str) str 스트링을 덧붙인다.
StringBuffer append(StringBuffer sb) sb 스트링 버퍼를 덧붙인다.
int capacity() 스트링 버퍼의 현재 크기 리턴
StringBuffer delete(int start, int end) start 위치에서 end 위치 앞까지 부분 문자열 삭제
StringBuffer insert(int offset, String str) str 스트링을 offset 위치에 삽입
StringBuffer replace(int start, int end, String str) start부터end가 지정하는 문자 앞의 서브 스트링을 str로 대치
StringBuffer reverse() 스트링 버퍼 내의 문자들을 반대 순서로 변경
void setLength(int newLength) 길이를 newLength로 재지정(현재 길이보다 크면 널문자로, 작은 경우는 기존 문자열이 잘림)

 

주요 메소드 예제 코드

public class Hongong {

    public static void main(String args[]){
        StringBuffer sb = new StringBuffer("This");

        sb.append(" is pencil.");
        System.out.println(sb);

        sb.insert(7, " my");
        System.out.println(sb);

        sb.replace(8, 10, "your");
        System.out.println(sb);

        sb.delete(8, 13);
        System.out.println(sb);

        sb.setLength(4);
        System.out.println(sb);

    }
}

 

실행 결과

'프로그래밍 > java' 카테고리의 다른 글

[JAVA] Math, Calendar 클래스  (0) 2022.05.22
[JAVA] StringToKenizer 클래스  (0) 2022.05.22
[JAVA] String 클래스 [ hashCode()와 identityHashCode() ]  (0) 2022.05.21
[JAVA] Wrapper 클래스  (0) 2022.05.21
[JAVA] Object 클래스  (0) 2022.05.21
Comments