내용변경해도 계속 같은 객체를 가리킴
StringBuffer.equals
는 주소비교
생성방법
: StringBuffer()
결합
: append()
(문자 배열, 버퍼)크기
: capacity()
(실제로 담긴 문자열)길이
: length()
인덱스 검사
: charAt()
삭제
: delete(int,int), deleteCharAt(int)
삽입
: insert(int,타입)
치환
: replace(int,int,String), setCharAt(int,char)
뒤집기
: reverse()
길이 변경
: setLength()
문자열String로 변환
: substring()
잘라내기, String 반환
: substring(int), substring(int,int)
비교
: (A.toString()).equals.(B.toString())
char[]
을 내부적으로 갖고 있다.StringBuffer sb = new StringBuffer("abc");
sb.append("123");
->
sb = "abc123"
!!! ✨기존 객체를 가리킨다 !!!
기본적으로 길이가 +16
?
(Δ) 이것보단
StringBuffer sb = new StringBuffer("abc");
sb.append("123");
sb.append("zzz");
(O) ✨요거로!!
StringBuffer sb = new StringBuffer("abc");
sb.append("123").append("zzz");
더 바람직하다!
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
boolean b1 = (sb1 == sb2)? //주소비교니 당연히 false
boolean b2 = sb1.equals(sb2); //오버라이딩 안되어있으므로 주소비교니까 false
toString()
사용해서 String
으로 변환 -> equals()
로!StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
String s1 = sb1.toString();
String s2 = sb2.toString();
boolean b2 = sb1.equals(sb2);
//String클래스의 equals는 내용비교이므로 true
StringBuffer()
StringBuffer(int capacity?)
-지정된 개수capacity?
만큼의 버퍼크기를 갖는 StringBuffer
타입의 인스턴스를 생성한다.
StringBuffer(String str)
str
을 갖는 StringBuffer
타입의 인스턴스를 생성한다.StringBuffer sb = new StringBuffer();
StringBuffer sb2 = new StringBuffer(10);
StringBuffer sb3 = new StringBuffer("abc");
->
sb = ""
sb2 = ""
sb3 = "abc"
StringBuffer append(기본타입 변수)
StringBuffer append(String str)
StringBuffer append(Object obj)
StringBuffer
선생님 죄송해요 너무 치기 귀찮았어요....
int capacity()
int length()
StringBuffer sb = new StringBuffer(100); //버퍼크기(배열크기) 100
sp.apend("abcd");
int buffersize = sb.capacity();
int stringsize = sb.length();
->
buffersize = 100
stringsize = 4 //"abcd"
StringBuffer delete(int start, int end)
start
부터 끝위치✨end - 1
에 있는 문자 제거StringBuffer
StringBuffer sb = new StringBuffer("0123456")
StringBuffer sb2 = sb.delete(3, 6); //index=3 ~ 5 까지 삭제
->
sb2 = "0126"
StringBuffer deleteCharAt(int index)
index
의 문자 1개를 제거StringBuffer
StringBuffer sb = new StringBuffer("0123456")
StringBuffer sb2 = sb.deleteCharAt(3); //index=3 삭제
->
sb2 = "012456"
StringBuffer insert(int pos, 기본타입 변수)
StringBuffer insert(int pos, String str)
StringBuffer insert(int pos, Object obj)
pos
(0~) 에 해당 매개변수를 문자열로 변환하여 삽입한다.pos == index
부터 맨뒤까지의 문자열을 뒤로 미룬 다음 -> 문자열로 변환한 해당 매개변수를 집어 넣는다.StringBuffer sb = new StringBuffer("0123456");
sb.insert(4, '.');
//index=4부터 뒤로 밀리고 pos=4부터 해당 문자열 넣기
->
sb = "0123.456"
StringBuffer replace(int start, int end, String str)
start
부터 ✨끝위치end - 1
까지를 문자열str
로 치환한다.StringBuffer sb = "0123456";
sb.replace(3, 6, "AB");
//index=3~5 ("345")를 "AB"로 치환
->
sb = "012AB6"
StringBuffer reverse()
StringBuffer sb = "0123456";
sb.reverse();
->
sb = "6543210"
StringBuffer setCharAt(int index, char ch)
index
의 문자를 주어진 문자ch
하나로 바꾼다.StringBuffer sb = new StringBuffer("0123456");
sb.setCharAt(5, 'o');
//index=5 인 '5'를 'o'로
->
sb = "01234o6"
void setLength(int newLength)
\u0000
로 StringBuffer sb = new StringBuffer("0123456");
sb.setLength(5);
StringBuffer sb2 = new StringBuffer("0123456");
sb2.setLength(10);
String str = sb2.toString().trim();
//sb2를 문자열로 변환하고 양쪽의 공백을 지운다.
->
sb = "01234"
sb2 = "0123456 "
str = "0123456"
String toString()
StringBuffer
인스턴스의 문자열을 String
으로 반환String substring(int start)
String substring(int start, int end)
start
부터 끝까지 또는 끝위치end - 1
까지 일부 잘라내서 ✨✨String
으로 반환한다.StringBuffer sb = new StringBuffer("0123456");
String str = sb.substring(3); //index=3부터 끝까지 잘라내서 반환
String str2 = sb.substring(3, 5); //index=3 ~ 4를 잘라내서 반환
->
str = "3456"
str2 = "34"
Ex9_12
StringBuffer sb = new StringBuffer("01");
StringBuffer sb2 = sb.append(23);
sb.append('4').append(56);
StringBuffer sb3 = sb.append(78);
sb3.append(9.0);
메소드가 똑같이 적용되고, ✨다 같은 객체를 가리킨다!
"0123456789.0"
capacity = 18
length = 12
sb.deleteCharAt(10);
"01234567890"
capacity = 18
length = 11
sb.delete(3, 6);
"01267890"
capacity = 18
length = 8
sb.insert(3, "abc")
"012abc67890"
capacity = 18
length = 11
sb.replace(6, sb.length(), "END")
length() = 11
✨index = 6 ~ 10
차례로 지우고, 채운다
"012abcEND"
capacity = 18
length = 9