-
여러가지 StringBuffer메서드Java/자바의정석 2023. 2. 22. 23:40반응형
StringBuffer의 메서드에는 대표적으로 무엇이있을까?
메서드 수행
tringBuffer append(boolean b)
StringBuffer append(char c)
StringBuffer append(char[] str)
StringBuffer append(CharSequence s)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long lng)
StringBuffer append(Object obj)
StringBuffer append(String str)
StringBuffer append(StringBuffer sb)인수로 전달된 값을 문자열로 변환한 후, 전달받은 문자열을 StringBuffer의 마지막에 추가하는 기능. int capacity() 현재 Buffer의 크기를 반환한다. StringBuffer delete(int start, int end) 인덱스에 해당하는 부분을 문자열에서 제거한다. StringBuffer deleteCharAt(int index) 인덱스에 해당하는 문자를 제거한다. StringBuffer insert(int offset, boolean b)
StringBuffer insert(int offset, char c)
StringBuffer insert(int offset, char[] str)
StringBuffer insert(int offset, CharSequence s)
StringBuffer insert(int offset, double d)
StringBuffer insert(int offset, float f)
StringBuffer insert(int offset, int i)
StringBuffer insert(int offset, long lng)
StringBuffer insert(int offset, Object obj)
StringBuffer insert(int offset, String str)전달된 값을 문자열로 변환한 후, 해당 문자열을 지정된 인덱스 위치에 추가한다. StringBuffer reverse() 해당 문자열을 역순으로 재배열한다. 이러한 기능들이 있지만 역시 실제 코드로 보는것이 더 좋아보인다.
아래의 코드는 자바의정석 9_12번 예제이다.
class Ex9_12 { public static void main(String[] args) { //char 배열이기때문에 모두 문자열 //디폴트는 16 , 인자로 전달받은 문자열만큼 버퍼의 크기가 늘어남 StringBuffer sb = new StringBuffer("0"); //0 StringBuffer sb2 = sb.append(2); //같은 주소를 가르킴, 02 sb.append('4').append(5); //0245 //append반환타입이 StringBuffer 이기때문에 StringBuffer.append()계속 추가 가능 -> 메서드 체이닝 StringBuffer sb3 = sb.append(7); //02457 sb3.append(9.0); ////024579.0 System.out.println("sb ="+sb); System.out.println("sb2="+sb2); System.out.println("sb3="+sb3); //모두 같은 객체를 가르킴 System.out.println("sb deleteCharAt="+sb.deleteCharAt(3)); //5삭제 System.out.println("sb delete="+sb.delete(3,6)); System.out.println("sb insert="+sb.insert(3,"ab")); //3번째 index 에 ab를 추가 System.out.println("sb replace="+sb.replace(3, sb.length(), "END")); //END로 치환 System.out.println("reverse =>"+sb.reverse()); System.out.println("capacity="+sb.capacity()); //배열의 길이 System.out.println("length="+sb.length()); //현재 저장된 String의 길이 }
===============실행결과=============
sb =024579.0
sb2=024579.0
sb3=024579.0
sb deleteCharAt=02479.0
sb delete=0240
sb insert=024ab0
sb replace=024END
reverse =>DNE420
capacity=17
length=6맨처음 Buffer를 생성하면 디폴트값으로 char배열로 생성이되며, 버퍼의 크기는 16이된다.
거기에 인자값으로 전달받은 내용을 문자열로 추가하여 해당 버퍼는 17의 크기로 생성되어진다.
0 append()
StringBuffer sb2 = sb.append(2);
0 2 ... append로 2를 추가해준다면 StringBuffer는 mutable 이기 때문에 같은 배열을 바라보게된다.
sb.append('4').append(5);
반환타입이 StringBuffer이기 때문에 메서드 체이닝이 가능하다.
0 2 4 5 ... StringBuffer sb3 = sb.append(7); sb3.append(9.0);
이역시도 같은 배열을 바라보게된다.
0 2 4 5 7 9 . 0 ... 이와같이 모두 문자열로 인식되어 . 도 하나의 길이를 차지하게된다.
deleteCharAt()
System.out.println("sb deleteCharAt="+sb.deleteCharAt(3));
deleteCharAt() -> 인덱스값을 지정하여 그에 해당하는 문자열을 삭제 -> 5삭제0 2 4 6 9 . 0 ... delete()
System.out.println("sb delete="+sb.delete(3,6));
delete() -> 전달받은 인덱스를 범위로 지정하여 문자열을 지운다.3~6번째 문자열을 지운다. 3 <= x < 6 마지막 인덱스는 포함되지 않는다.
0 2 4 0 ... insert()
System.out.println("sb insert="+sb.insert(3,"ab"));
insert() -> 전달받은 인덱스에 해당 문자열을 추가한다.
0 2 4 a b 0 ... replace()
System.out.println("sb replace="+sb.replace(3, sb.length(), "END"));
replace() ; 전달받은 범위의 문자열을 해당 문자열로 변경한다.
0 2 4 E N D ... 3 <= x < sb.length(6) : 3부터 5까지 마지막은 포함되지 않는다.
reverse()
D N E 4 2 0 ... System.out.println("reverse =>"+sb.reverse());
reverse() 배열을 반대로 reverse하는데 특이한점은 처음과 끝을 순서대로 맞바꾼다.
설명 : index[0] <-> index[5] / index[1] <-> index[4] / index[2] <-> index[3]
capacity()
System.out.println("capacity="+sb.capacity());
buffer의 크기를 반환한다.
디폴트값은 16으로 생성되지만, 초기 생성시 0이라는 인자값을 추가로 생성하여 17이 반환되어진다.
반응형'Java > 자바의정석' 카테고리의 다른 글
Wrapper클래스란? (0) 2023.02.22 자바 Math의 주요 메서드 (0) 2023.02.22 자바의정석 - StringBuffer()란? (0) 2023.02.22 자바 equals()와 hashcode()는 왜 같이 재정의해야하는가? (0) 2023.02.22 자바 hashCode(), identityHashCode() (0) 2023.02.22