반응형

StringBuffer의 생성자와 메서드

 

StringBuffer()는 매개변수로 아무것도 주지 않고 생성자를 이용하면,
길이가 16인 StringBuffer의 인스턴스 char[]배열이 만들어진다.  아무것도 입력하지 않고, 출력해보면, 빈문자열이 나온다.

StringBuffer(int length)는 매개변수로 길이를 주는 것인데,
지정된 길이를 가진 StringBuffer인스턴스 char[]를 생성한다.

StringBuffer(String str)로 매개변수에  "Hi"라는 문자열을 주면,
지정된 문자열 값을 갖는 StringBuffer인스턴스를 생성한다.
이때 배열의 길이는 지정한 문자열의 길이보다 16더 길게 생성된다.

StringBuffer append() 메서드는, 문자열을 추가할 때 사용한다.
매개변수로 여러종류의 타입들이 가능하다.
매개변수에 어떤 타입이 들어와도, 문자열로 변환되어 StringBuffer에 저장 된다.

StringBuffer sb = new StringBuffer("abc");가 있을 때,
해당 문장을 통해 StringBuffer를 생성하면, char[]배열이 만들어지고,
그 배열에 abc가 저장된다.
그리고, StringBuffer sb2 = sb.append(ture);를 해주면,
해당 StringBuffer에 추가적으로 boolean값 true가 문자열로 변환되어 스트링버퍼에 저장된다.
참조변수 sb, sb2는 모두 같은 StringBuffer객체를 가리킨다.

int capacity() 는 StringBuffer인스턴스의 버퍼크기(char[])를 알려준다.
int length()는 버퍼에 담긴 문자열의 길이를 알려준다.
StringBuffer sb = new StirngBuffer(100);
sb.append("abcd");를 했을 때,
int buffersize = sb.capacity()는 100이고,
int stringSize = sb.length();는 4다.

char charAt(int index)는 지정된 위치(인덱스)에 있는 문자를 반환한다.
StringBuffer sb = new StringBuffer("abc");일때,
char c = sb.charAt(2); 를 하면 인덱스가 2인 문자 C를 반환한다.

StringBuffer delete(int start, int end)는 start~end-1 범위에 있는 문자를 삭제하는 메서드다.
StringBuffer sb = new StringBuffer("0123456");일 때,
StringBuffer sb2 = sb.delete(3, 6); 를 하면, 3, 4, 5가 삭제된다.
삭제하면 빈자리는 뒤의 문자들이 땡겨서 채워진다.

StringBuffer deleteCharAt(int index)는 지정된 위치(index)의 문자를 제거한다.

 

 

StringBuffer insert(int pos, 문자)는 지정된 위치에 지정하나 문자를 삽입하는 메서드이다.
insert메서드도, append메서드 처럼 굉장히 다양한 종류의 매개변수를 지원한다.
pos는 포지션의 약자이다. 넣을 위치(인덱스)를 지정하는 것이다.
StringBuffer sb = new StirngBuffer("0123456");일 때,
sb.insert(4,'.');를 하면, sb는 "0123.456"이 된다.

int length()는 StringBuffer인스턴스에 저장되어 있는 문자열의 길이를 반환한다.

StringBuffer replace(int start, int end, String str)은 start~end-1까지 str로 대체하는 것이다.
StringBuffer sb = new StringBuffer("0123456");일 때,
sb.replace(3, 6, "AB");를 하면,
sb 는 "012AB6"가 된다.

StringBuffer reverse()는 StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다.
뒤집는 방법은, 0123456이 있으면, 맨끝에있는 것들끼리 자리바꾸고, 그다음것들 끼리 자리바꾸고 하는 방식이다.
길이가 홀수라면 가운데에 있는것은 위치가 그대로일 것이다.

 

 

void setCharAt(int index, char ch)은 특정 인덱스에 있는 문자를 특정 문자로 바꾸는 것이다.
StringBuffer sb = new StringBuffer("0123456");일 때,
sb.setCharAt(5, 'o');를 하면, sb는 "01234o6" 이 된다.

void setLength(int newLength)는 길이를 변경하는 메서드다.
StringBuffer sb = new StringBuffer("0123456");일때,
sb.setlength(5);를 하면 sb는 "01234"가 된다.
그리고 StringBuffer sb = new StringBuffer("0123456");일때,
만약, sb.setLength(10);을 하면 sb는 "0123456   "이 된다.
즉, 저장된 문자열보다 초과된 길이는 null로 대체된다.

String toString()은 StringBuffer를 String으로 바꿀 때 사용한다.

String substring(int start)는 문자열의 일부를 잘라내는 것이다.
start인덱스부터 끝까지 잘라내는 것이고,

Strart substring(int start, int end)는 start~end-1만큼 잘라낸다.
StringBuffer sb = new StringBuffer("0123456");
String str = sb.substring(3);은  sb는 "3456"
String str sb.substring(3, 5);를 하면 sb는 "34"가 된다.

 


 

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

 

 

StringBuffer sb = new StringBuffer("01");을 하면,
StringBuffer에 01이 저장된다.
그리고 StringBuffer sb2 = sb.append(23);을 하면, 2와 3이 sb에 문자로 들어간다.
sb2는 같은 sb와 같은 StringBuffer를 가리킨다.

그리고 sb.append('4').append(56);이 가능한 이유는, append()의 반환 결과가 StringBuffer이기 때문에 가능하다.
이러한 것을 메서드 체이닝이라고 한다.(메서드를 계속 연결해서 호출할 수 있는 것)
결과는 sb에 "0123456"이 저장되어 있을 것이다.

그리고 StringBuffer sb3 = sb.append(78);을 하면
sb에는 "012345678"이 저장되어 있을 것이다 .
sb3.append(9.0)을 하면 sb에는 "0123456789.0"이 저장될 것이다.

sb, sb2, sb3는 모두 같은 StringBuffer인스턴스를 가리키기 때문에,
결과를 출력해보면 모두 같다.

그리고 sb.deleteCharAt(10)을 하면, 10번 인덱스에 있는 '.'이 제거되고,
sb에는 "01234567890"이 저장되어 있을 것이다 .

sb.delete(3, 6);을 하면,
3~5가 지워지므로 sb는 "01267890"이 저장된다.

sb.insert(3, "abc");를 하면, index가 3인 곳에 "abc"를넣는다.
sb는 "012abc67890"이 된다.

sb.replace(6, sb.length(), "END");를 하면, index가 6인 곳 부터 sb.length()-1번째까지 즉, 끝까지를  "END"로 바꾼다.
sb는 "012abcEND"가 된다.

sb.capacity()는 스트링버퍼의 크기가 18이라는 뜻이고,
sb.length()는 스트링버퍼의 문자길이가 9라는 뜻이다.

 

반응형

'JAVA' 카테고리의 다른 글

래퍼 클래스, Number 클래스  (0) 2022.04.18
StringBuilder, Math 클래스  (0) 2022.04.17
StringBuffer 클래스  (0) 2022.04.15
StringJoiner, 문자열과 기본형 변환  (0) 2022.04.15
String 생성자  (0) 2022.04.15