StringBuffer, StringBuilder의 개념이 궁금하다면 하단의 링크를 클릭하시라.
04. [자바] StringBuffer 와 StringBuilder
결론 결론부터 말하면 특별한 경우가 아니라면 StringBuilder 를 사용하자 StringBuffer 와 StringBuilder 는 생성자부터 메소드까지 정말 또오옥같다 🤷♂️ 아래의 본문에는 StringBuffer 클래스에 대한
staticclass.tistory.com
아래의 표를 보기전에..
StringBuffer에 대한 설명이지만 StringBuilder를 쓰는게 더 좋겠다.StringBuffer
와 StringBuilder
는 생성자부터 메소드까지 정말 또오옥같다 🤷♂️
아래의 본문에는 StringBuffer
클래스에 대한 설명이 전부이지만StringBuilder
로 클래스만 바꾸면 메소드,기능,리턴 다 똑같다.😊
StringBuffer sb = new StringBuffer();
sb.append("abc");
↓ 똑같다 ↓
StringBuilder sb = new StringBuilder();
sb.append("abc");
StringBuilder를 써야하는 이유는?
StirngBuffer는 멀티쓰레드에 안전하도록 동기화되어 있는데 동기화가 StringBuffer의 성능을
떨어뜨리기 때문이다, 멀티쓰레드로 작성된 프로그램이 아닌 경우 StringBuffer의 동기화
는
불필요하게 성능만 떨어뜨리게 된다.
그래서 동기화만 빼고 똑같이 만들어둔게 StringBuilder
이다.😎
StringBuffer, StringBuilder 생성자와 메서드
메서드 / 설명 | 예 제 / 결 과 |
StringBuffer() | StringBuffer sb = new StringBuffer(); |
16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성시킨다. |
sb = "" |
StringBuffer(int length) | StringBuffer sb = new StringBuffer(10); |
지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer인스턴스를 생성한다. |
sb = "" |
StringBuffer(String str) | StringBuffer sb = new StringBuffer("Hi"); |
지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스를 생성한다. |
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 sb = new StringBuffer("abc"); StringBuffer sb2 = sb.append(true); sb.append('d').append(10.0f); StringBuffer sb3 = sb.append("ABC") .append(123) |
매개변수로 입력된 값을 문자열로 변환하여 StringBuffer인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다. |
sb = "abctrued10.0ABC123" sb2 = "abctrued10.0ABC123" sb3 = "abctrued10.0ABC123" |
int capacity() |
StringBuffer sb = new StringBuffer(100); sb.append("abcd"); int bufferSize = sb.capacity(); |
StringBuffer인스턴스의 버퍼크기를 알려준다. |
bufferSize = 100 |
int length() | StringBuffer sb = new StringBuffer(100); sb.append("abcd"); int stringSize = sb.length(); |
length()는 버퍼에 담긴 문자열의 길이를 알려준다. | stringSize = 4 (sb에 담긴 문자열이 "abcd"이므로) |
char charAt(int index) | StringBuffer sb = new StringBuffer("abc"); char c = sb.charAt(2); |
지정된 위치(index)에 있는 문자를 반환한다. | c = 'c' |
StringBuffer delete(int start, int end) | StringBuffer sb = new StringBuffer("0123456"); StringBuffer sb2 = sb.delete(3, 6); |
시작위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거한다. 시작위치의 문자는 범위에 포함되지만 끝 위치의 문자는 포함되지 않는다. (begin ≦ x < end) |
sb = "0126" |
StringBuffer deleteCharAt(int index) | StringBuffer sb = new StringBuffer("0123456"); sb.deleteCharAt(3); |
지정된 위치(index)의 문자를 제거한다. | sb = "012456" |
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) |
StringBuffer sb = new StringBuffer("0123456"); sb.insert(4, '.'); |
두 번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가한다. (pos는 0부터 시작) |
sb = "0123.456" |
StringBuffer replace(int start, int end, String str) | StringBuffer sb = newStringBuffer("0123456"); sb.replace(3, 6, "AB"); |
지정된 범위(start~end)의 문자들을 주어진 문자열로 바꾼다. end위치의 문자는 범위에 포함 되지 않음 (begin ≦ x < end) |
sb = "012AB6" //"345"를 "AB"로 바꿈 |
StringBuffer reverse() | StringBuffer sb = new StringBuffer("0123456"); sb.reverse(); |
StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다. |
sb = "6543210" |
void setCharAt(int index, char ch) | StringBuffer sb = new StringBuffer("0123456"); sb.setCharAt(5, o); |
지정된 위치의 문자를 주어진문자(ch)로 바꾼다. | sb = "01234o6" |
void setLength(int newLength) | StringBuffer sb = new StringBuffer("0123456"); sb.setLength(5); StringBuffer sb2 = new StringBuffer("0123456"); sb2.setLength(10); String str = sb2.toString().trim(); |
지정된 길이로 문자열의 길이를 변경한다. 길이를 늘리는 경우에 나머지 빈 공간을 null문자 '\u000'로 채운다. |
sb = "01234" sb2 = "0123456 " str = "0123456" |
String toString() | StringBuffer sb = new StringBuffer("0123456"); String str = sb.toString(); |
StringBuffer인스턴스의 문자열을 String으로 반환 | str = "0123456" |
String Substring(int start) String subString(int start, int end) |
StringBuffer sb = new StringBuffer("0123456"); String str = sb.subString(3); String str2 = sb.subString(3, 5); |
지정된 범위 내의 문자열을 String으로 뽑아서 반환한다. 시작위치(start)만 지정하면 시작위치부터 문자열 끝까지 뽑아서 반환한다. |
str = "3456" str2 = "34" |
댓글