Ch9-19~20. StringBuffer
0. 목차
Chapter9. java.lang 패키지와 유용한 클래스
Ch9 - 19. StringBuffer의 생성자와 메서드
Ch9 - 20. StringBuffer의 생성자와 메서드 예제
Ch9 - 19. StringBuffer의 생성자와 메서드
▶ StringBuffer()
▷ 16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스 생성
StringBuffer sb = new StringBuffer();
// console
""
sb : [][][][][][][][][][][][][][][][] // char[16]
▶ StringBuffer(int length)
▷ 지정 된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스 생성
StringBuffer sb = new StringBuffer(10);
// console
""
sb : [][][][][][][][][][] // char[10]
▶ StringBuffer(String str)
▷ 지정 된 문자열 값(str)을 갖는 StringBuffer 인스턴스 생성
StringBuffer sb = new StringBuffer("Hi");
// console
Hi
sb : [H][i][][][][][][][][][][][][][][][][] // char[2 + 16]
▶ StringBuffer append(boolean b)
▶ StringBuffer append(char ch)
▶ 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 인스턴스가 저장하고 있는 문자열의 뒤에 덧붙임
StringBuffer sb1 = new StringBuffer("AAA");
StringBuffer sb2 = sb1.append(true);
sb1.append('d').append(10.0f);
StringBuffer sb3 = sb1.append("BBB").append(123);
// console
AAAtrued10.0BBB123 // sb1
AAAtrued10.0BBB123 // sb2
AAAtrued10.0BBB123 // sb3
sb1 : [A][A][A][][][][][][][][][][][][][][][][]
sb1,sb2 : [A][A][A][t][r][u][e][][][][][][][][][][][][]
sb1,sb2 : [A][A][A][t][r][u][e][d][][][][][][][][][][][]
sb1,sb2 : [A][A][A][t][r][u][e][d][1][0][.][0][][][][][][][]
sb1,sb2,sb3 : [A][A][A][t][r][u][e][d][1][0][.][0][B][B][B][][][][]
sb1,sb2,sb3 : [A][A][A][t][r][u][e][d][1][0][.][0][B][B][B][1][2][3][]
▶ int capacity()
▷ StringBuffer 인스턴스의 버퍼 크기(char[] 개수)를 반환
StringBuffer sb = new StringBuffer(100);
sb.append("AAAAA");
int bufferSize = sb.capacity();
// console
100
sb : [A][A][A][A][A][][][][][][][][][][][][][][]...[][][][][] // [] 총 개수 : 100개
▶ int length()
▷ StringBuffer 인스턴스의 버퍼에 담긴 문자열의 길이를 반환
StringBuffer sb = new StringBuffer(100);
sb.append("AAAAA");
int bufferLength = sb.length();
// console
5
sb : [A][A][A][A][A][][][][][][][][][][][][][][]...[][][][][] // [A] 개수 : 5개
▶ char charAt(int index)
▷ 지정 된 위치(index)에 있는 문자를 반환
StringBuffer sb = new StringBuffer("ABC");
char ch = sb.charAt(2);
// console
C
sb : [A][B][C][][][][][][][][][][][][][][][][]
▶ StringBuffer delete(int begin, int end)
▷ 시작 위치(begin)에서 끝 위치(end) 사이에 있는 문자를 제거
▷ begin ≤ 범위 < end
StringBuffer sb1 = new StringBuffer("0123456");
StringBuffer sb2 = sb1.delete(3, 6); // 3 ≤ 범위 < 6, 3 ~ 5
// console
0126 // sb1
0126 // sb2
sb1 : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb1,sb2 : [0][1][2][][][][6][][][][][][][][][][][][] // delete(3, 6)
sb1,sb2 : [0][1][2][6][][][][][][][][][][][][][][][] // 삭제 된 자리는 앞 당겨 채워넣음
▶ StringBuffer deleteCharAt(int index)
▷ 지정 된 위치(index)의 문자만 제거
StringBuffer sb = new StringBuffer("0123456");
sb.deleteCharAt(3);
// console
012456
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb : [0][1][2][][4][5][6][][][][][][][][][][][][] // deleteCharAt(3);
sb : [0][1][2][4][5][6][][][][][][][][][][][][][] // 삭제 된 자리는 앞 당겨 채워넣음
▶ StringBuffer insert(int pos, boolean b)
▶ StringBuffer insert(int pos, char ch)
▶ 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)
▷ append()는 맨 끝에 추가하는 거라서 위치 지정 필요 없음
▷ insert()는 위치 지정 필요
▷ 반환 타입 : StringBuffer → 자기 자신을 반환
▷ 두 번째 매개변수로 받은 값을 문자열로 변환하여
▷ 지정 된 위치(pos)에 추가
▷ pos는 0부터 시작
StringBuffer sb = new StringBuffer("0123456");
sb.insert(4, '#');
// console
0123#456
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb : [0][1][2][3][][4][5][6][][][][][][][][][][][] // insert(4, '#'), char[4] 방 뺌
sb : [0][1][2][3][#][4][5][6][][][][][][][][][][][] // insert(4, '#'), char[4] # 넣음
▶ StringBuffer replace(int begin, int end, String str)
▷ 시작 위치(begin)에서 끝 위치(end) 사이에 있는 문자들을
▷ 주어진 문자열(str)로 바꿈
▷ begin ≤ 범위 < end
StringBuffer sb = new StringBuffer("0123456");
sb.replace(3, 6, "AB"); // 3 ~ 5
// console
012AB6
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb : [0][1][2][][][][6][][][][][][][][][][][][] // replace(3, 6, "AB"), char[3 ~ 5] 방 뺌
sb : [0][1][2][A][B][][6][][][][][][][][][][][][] // replace(3, 6, "AB"), char[3 ~ 5] AB 넣음
sb : [0][1][2][A][B][6][][][][][][][][][][][][][] // 삭제 된 자리는 앞 당겨 채워넣음
▶ StringBuffer reverse()
▷ StringBuffer 인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열
StringBuffer sb = new StringBuffer("0123456");
sb.reverse();
// console
6543210
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb : [6][1][2][3][4][5][0][][][][][][][][][][][][] // 끝 ↔ 끝
sb : [6][5][2][3][4][1][0][][][][][][][][][][][][] // 끝-1 ↔ 끝-1
sb : [6][5][4][3][2][1][0][][][][][][][][][][][][] // 끝-2 ↔ 끝-2, 홀수라서 짝이 없는 가운데 멤버는 가만 둠
▶ StringBuffer setCharAt(int index, char ch)
▷ 지정 된 위치(index)의 문자를 주어진 문자(ch)로 바꿈
StringBuffer sb = new StringBuffer("0123456");
sb.setCharAt(5, 'A');
// console
01234A6
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb : [0][1][2][3][4][][6][][][][][][][][][][][][] // setCharAt(5, 'A'), char[5] 방 뺌
sb : [0][1][2][3][4][A][6][][][][][][][][][][][][] // setCharAt(5, 'A'), char[5] A 넣음
▶ void setLength(int newLength)
▷ 지정 된 길이(newLength)로 길이를 변경
▷ 길이를 늘리는 경우에, 나머지 빈 공간을 char의 초기값 \u0000을 채움
StringBuffer sb1 = new StringBuffer("0123456");
sb1.setLength(5);
StringBuffer sb2 = new StringBuffer("0123456");
sb2.setLength(10);
String str = sb2.toString().trim();
// console
sb1 : 01234
sb2 : 0123456
str : 0123456
sb1 : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb1 : [0][1][2][3][4][][][][][][][][][][][][][][] // setLength(5), char[5] 까지만 문자열 살림
sb2 : [0][1][2][3][4][5][6][][][][][][][][][][][][]
sb2 : [0][1][2][3][4][5][6][\u0000][\u0000][\u0000][][][][][][][][][] // setLength(10), char[10] 까지 초기값 \u0000 채움
sb2,str : [0][1][2][3][4][5][6][\u0000][\u0000][\u0000][][][][][][][][][]
str : [0][1][2][3][4][5][6][][][][][][][][][][][][] // sb2.toString().trim(), trim()으로 양 끝의 \u0000 잘라내기
▶ String toString()
▷ StringBuffer 인스턴스의 문자열을 String으로 반환
▷ StringBuffer → String
StringBuffer sb = new StringBuffer("0123456");
String str = sb.toString();
// console
"0123456"
▶ String substring(int begin)
▶ String substring(int begin, int end)
▷ 반환 타입 : String → 일부를 뽑아서 StringBuffer를 String으로 반환
▷ int end 생략 시, begin ~ 끝
▷ int end 작성 시, begin ≤ 범위 < end
▷ 지정 된 범위 내의 문자열을 String으로 뽑아서 반환
StringBuffer sb = new StringBuffer("0123456");
String str1 = sb.substring(3); // 3 ~ 끝
String str2 = sb.substring(3, 5); // 3 ~ 4
// console
str1 : 3456
str2 : 34
sb : [0][1][2][3][4][5][6][][][][][][][][][][][][]
str1 : [][][][3][4][5][6][][][][][][][][][][][][] // substring(3), char[3 ~ 끝]만 남기고 다 없애기
str1 : [3][4][5][6][][][][][][][][][][][][][][][] // 삭제 된 자리는 앞 당겨 채워넣음
str2 : [][][][3][4][][][][][][][][][][][][][][] // substring(3, 5), char[3 ~ 4]만 남기고 다 없애기
str2 : [3][4][][][][][][][][][][][][][][][][][] // 삭제 된 자리는 앞 당겨 채워넣음
Ch9 - 20. StringBuffer의 생성자와 메서드 예제
▶ append()
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);
// console
sb = 0123456789.0
sb2 = 0123456789.0
sb3 = 0123456789.0
sb : [0][1][][][][][][][][][][][][][][][][]
sb,sb2 : [0][1][2][3][][][][][][][][][][][][][][]
sb,sb2 : [0][1][2][3][4][5][6][][][][][][][][][][][]
sb,sb2,sb3 : [0][1][2][3][4][5][6][7][8][][][][][][][][][]
sb,sb2,sb3 : [0][1][2][3][4][5][6][7][8][9][.][0][][][][][][]
▶ deleteCharAt(),delete(),insert(),replace()
System.out.println("sb = "+sb);
System.out.println("sb2 = "+sb2);
System.out.println("sb3 = "+sb3);
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"));
// console
sb = 01234567890
sb = 01267890
sb = 012abc67890
sb = 012abcEND
sb : [0][1][2][3][4][5][6][7][8][9][.][0][][][][][][]
sb : [0][1][2][3][4][5][6][7][8][9][][0][][][][][][] // deleteCharAt(10)
sb : [0][1][2][3][4][5][6][7][8][9][0][][][][][][][]
sb : [0][1][2][3][4][5][6][7][8][9][0][][][][][][][]
sb : [0][1][2][][][][6][7][8][9][0][][][][][][][] // delete(3,6)
sb : [0][1][2][6][7][8][9][0][][][][][][][][][][]
sb : [0][1][2][][6][7][8][9][0][][][][][][][][][]
sb : [0][1][2][a][b][c][6][7][8][9][0][][][][][][][] // insert(3,"abc")
sb : [0][1][2][a][b][c][6][7][8][9][0][][][][][][][]
sb : [0][1][2][a][b][c][][][][][][][][][][][][] // replace(6, sb.length())
sb : [0][1][2][a][b][c][E][N][D][][][][][][][][][] // replace(6, sb.length(), "END")
▶ capacity(), length()
System.out.println("capacity = "+sb.capacity());
System.out.println("length = "+sb.length());
}
// console
capacity = 18
length = 9
sb : [0][1][2][a][b][c][E][N][D][][][][][][][][][] // 처음 StringBuffer("01"), char[2 + 16]
sb : [0][1][2][a][b][c][E][N][D][][][][][][][][][] // 012abcEND 총 9개