본문 바로가기
Java의 정석/java.lang 패키지 & 유용한 클래스

StringBuffer 클래스의 메서드

by Hwanii_ 2023. 9. 2.
728x90
ch 9 - 19 ~ 20

StringBuffer 클래스의 메서드

 

ch9 - 19
StringBuffer의 생성자와 메서드 (1 / 4)

메서드 :
StringBuffer()
>>
16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성.

예제 :
StringBuffer sb = new StringBuffer();

결과 :
sb = ""

메서드 :
StringBuffer(int length)
>>
지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성.

예제 :
StringBuffer sb = new StringBuffer(10);

결과 :
sb = ""

메서드 :
StringBuffer(String str)
>>
지정된 문자열 값 (str) 을 갖는 StringBuffer 인스턴스를 생성.

예제 :
StringBuffer sb = new StringBuffer("Hi");

결과 :
sb = "Hi"

메서드 :
StringBuffer append(boolean b)
StringBuffer append(char c)
StringBuffer append(char[] str)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(Object obj)
StringBuffer append(String str)

>>
매개변수로 입력된 값을 문자열로 변환하여,
StringBuffer 인스턴스가 저장 하고 있는 문자열의 뒤에 이어 붙힌다.

예제 :
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = sb.append(true);
sb.append('d').append(10.0f);

StringBuffer sb3 = sb.append("ABC").append(123);

결과 :
sb = "abctrued10.0ABC123"
sb2 = "abctrued10.0ABC123"
sb3 = "abctrued10.0ABC123"

 

StringBuffer의 생성자와 메서드 (2 / 4)

메서드 :
int capacity()
>>
StringBuffer 인스턴스의 버퍼 ( char[] ) 크기를 알려준다.
length() 는 버퍼에 담긴 문자열의 길이를 알려준다.

예제 :
StringBuffer sb = new StringBuffer(100);
sb.append("abcd");
int bufferSize = sb.capacity();
int stringSize = sb.length();

결과 :
bufferSize = 100
stringSize = 4 (sb에 담긴 문자열이 "abcd" 이므로)

메서드 :
char charAt(int index)
>>
지정된 위치 (index) 에 있는 문자 1개를 반환.

예제 :
StringBuffer sb = new StringBuffer("abc");
char c = sb.charAt(2);

결과 :
c = 'c'

메서드 :
StringBuffer delete(int start, int end)
>>
시작 위치 부터 끝 위치 "사이" 에 있는 문자를 제거.
단, 끝 위치의 문자는 제외.

예제 :
StringBuffer sb = new StringBuffer("0123456");
StringBuffer sb2 = sb.delete(3, 6);

결과 :
sb = "0126"     (345 제거)
sb2 = "0126"    (345 제거)

메서드 :
StringBuffer deleteCharAt(int index)
>>
지정된 위치 (index) 의 문자를 제거.

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.deleteCharAt(3);

결과 :
sb = "012456"

 

StringBuffer의 생성자와 메서드 (3 / 4)

메서드 :
StringBuffer insert(int pos, boolean b)
StringBuffer insert(int pos, char c)
StringBuffer insert(int pos, char[] str)
StringBuffer insert(int pos, double d)
StringBuffer insert(int pos, float f)
StringBuffer insert(int pos, int i)
StringBuffer insert(int pos, long l)
StringBuffer insert(int pos, Object obj)
StringBuffer insert(int pos, String str)

>>
두 번째 매개변수로 받은 값을 문자열로 변환하여,
지정된 위치 (pos) (== position) 에 추가.
pos 는 0 부터 시작 한다.

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.insert(4,'.');

결과 :
sb = "0123.456"

메서드 :
int length()
>>
StringBuffer 인스턴스에 저장 되어 있는 문자열의 길이를 반환.

예제 :
StringBuffer sb   = new StringBuffer("0123456");
int length = sb.length();

결과 :
length = 7

메서드 :
StringBuffer replace(int start, int end, String str)
>>
지정된 범위 (start ~ end) 의 문자들을,
주어진 문자열로 바꾼다.
end 위치의 문자는 범위에 포함 되지 않는다.
(start <= x < end)

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.replace(3, 6, "AB");

결과 :
sb = "012AB6" ("345" 가 "AB" 로 변경)

메서드 :
StringBuffer reverse()
>>
StringBuffer 인스턴스에 저장 되어 있는 문자열의 순서를 거꾸로 나열.

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.reverse();

결과 :
sb = "6543210"

 

StringBuffer의 생성자와 메서드 (4 / 4)

메서드 :
void setCharAt(int index, char ch)
>>
지정된 위치의 문자를 주어진 문자 (ch) 로 바꾼다.

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.setCharAt(5, 'o');

결과 :
sb = "01234o6"

메서드 :
void setLength(int newLength)
>>
지정된 길이로 문자열의 길이를 변경.
길이를 늘리는 경우에, 나머지 빈 공간을 null 로 채운다. ('\u0000')

예제 :
StringBuffer sb = new StringBuffer("0123456");
sb.setLength(5);

StringBuffer sb2 = new StringBuffer("0123456");
sb2.setLength(10);
String str = sb2.toString().trim();

결과 :
sb = "01234"
sb2 = "0123456   "  //  (길이가 7 이였지만, 10으로 늘리면서 늘어난 3칸을 null 로 채운 모습)
str = "0123456"     //  (trim() 메서드로 공백 잘라내기)

메서드 :
String toString()
>>
StringBuffer 인스턴스의 문자열을 String 으로 반환.

예제 :
StringBuffer sb = new StringBuffer("0123456");
String str = sb.toString();

결과 :
str = "0123456"

메서드 :
String substring(int start)
String substring(int start, int end)
>>
지정된 범위 내의 문자열을 String 으로 뽑아서 문자열로 반환. (잘라내기)
시작 위치 (start) 만 지정하면,
시작 위치 부터 문자열 끝까지 뽑아서 문자열로 반환. (잘라내기)

예제 :
StirngBuffer sb = new StringBuffer("0123456");
String str = sb.substring(3);
String str2 = sb.substring(3, 5);

결과 :
str = "3456"
str2 = "34"

 

[ 참고 ]
자바에서, 무언가 index를 가리켜서 활용하는 메서드가 있을 때,
end index로 지정되는 index는 포함 안되도록 되어 있다.

즉, 시작 범위는 포함 되고, 끝 범위는 포함 되지 않는다.

start <= x < end

 

ch9 - 20
StringBuffer의 생성자와 메서드 예제

 

class Ex9_12 {

    public static void main(String[] args) {

        StringBuffer sb = new StringBuffer("01");
        StringBuffer sb2 = sb.append(23);
        sb.append('4').append(56);

        StringBuffer sb3 = sb.append(78);
        sb3.append(9.0);

        //  위와 같이 메서드를 계속 연결시키는 행위를 "메서드 체이닝" 이라 한다.

        System.out.println("sb = " + sb);       //  0123456789.0 (sb2랑 sb3은 모두 참조변수 sb의 주소값을 가리킨다)
        System.out.println("sb2 = " + sb2);     //  0123456789.0 (sb2랑 sb3은 모두 참조변수 sb의 주소값을 가리킨다)
        System.out.println("sb3 = " + sb3);     //  0123456789.0 (sb2랑 sb3은 모두 참조변수 sb의 주소값을 가리킨다)

        System.out.println("===== 줄바꿈 =====");

        System.out.println("sb = " + sb.deleteCharAt(10));
        System.out.println("sb = " + sb.delete(3, 6));
        System.out.println("sb = " + sb.insert(3, "abc"));
        System.out.println("sb = " + sb.replace(6, sb.length(), "END"));    //  6 <= x < 11

        //  어떤 인덱스에 있었던 문자열이 제거되면,
        //  그 다음 인덱스에 있는 문자열들이,
        //  비어진 인덱스의 자리로 자동으로 이동 하게 된다.

        System.out.println("===== 줄바꿈 =====");

        System.out.println("capacity = " + sb.capacity());  //  인스턴스의 총 길이 (크기)
        System.out.println("length = " + sb.length());      //  인스턴스에 저장된 현재 문자열의 길이.

    }

}

 

[ console ]

 

반응형