문자열을 수정할 때는 StringBuffer 및 StringBuilder 클래스를 사용해야 합니다.
String 클래스와 달리 StringBuffer 및 StringBuilder 클래스의 개체는 사용되지 않는 새 개체를 만들지 않고도 여러 번 수정할 수 있습니다.
StringBuilder 클래스는 Java 5에서 제안되었습니다. 이 클래스와 StringBuffer의 가장 큰 차이점은 StringBuilder가 이 메서드는 스레드로부터 안전하지 않습니다. 스레드 안전은 다중 스레드에 액세스할 때 잠금 메커니즘이 사용된다는 것을 의미합니다. 스레드가 이 클래스의 특정 데이터에 액세스하면 해당 데이터는 보호되며 스레드가 읽기를 마칠 때까지 다른 스레드는 해당 데이터에 액세스할 수 없습니다. 기타 스레드를 사용할 수 있습니다. 스레드가 안전하지 않다는 것은 데이터 액세스 보호를 제공하지 않으며 여러 스레드가 데이터를 연속적으로 변경하여 결과 데이터가 더티 데이터가 될 수 있음을 의미합니다.
StringBuilder는 StringBuffer에 비해 속도 이점이 있으므로 대부분의 경우 StringBuilder 클래스를 사용하는 것이 좋습니다. 그러나 애플리케이션에 스레드 안전성이 필요한 경우 StringBuffer 클래스를 사용해야 합니다.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
test String Buffer
다음은 StringBuffer 클래스에서 지원하는 주요 메서드입니다.
일련번호 | 방법 설명 |
---|---|
1 | public StringBufferappend(String s) 지정된 문자열을 이 문자 시퀀스에 추가합니다. |
2 | public StringBuffer reverse() 이 문자 시퀀스를 반대 형식으로 바꿉니다. |
3 | public delete(int start, int end) 이 시퀀스의 하위 문자열에서 문자를 제거합니다. |
4 | public insert(int offset, int i) int 인수의 문자열 표현을 이 시퀀스에 삽입합니다. |
5 | replacement(int start, int end, String str) 이 시퀀스의 하위 문자열에 있는 문자를 지정된 String 에 있는 문자로 바꿉니다. |
다음 목록의 메서드는 String 클래스의 메서드와 유사합니다.
일련번호 | 방법 설명 |
1 | intcapacity()는 현재 용량을 반환합니다. |
2 | char charAt(int index) 이 시퀀스의 지정된 인덱스에 있는 char 값을 반환합니다. |
3 | void verifyCapacity(int maximumCapacity) 용량이 최소한 지정된 최소값과 같은지 확인합니다. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 이 시퀀스의 문자를 대상 문자 배열 dst 에 복사합니다. |
5 | int indexOf(String str) 문자열에서 지정된 하위 문자열이 처음 나타나는 인덱스를 반환합니다. |
6 | int indexOf(String str, int fromIndex) 지정된 인덱스에서 시작하여 문자열에서 지정된 하위 문자열이 처음 나타나는 인덱스를 반환합니다. |
7 | int lastIndexOf(String str) 지정된 하위 문자열이 가장 오른쪽에 나타나는 문자열의 인덱스를 반환합니다. |
8 | int lastIndexOf(String str, int fromIndex) 지정된 하위 문자열이 마지막으로 나타나는 문자열의 인덱스를 반환합니다. |
9 | int length()는 문자 길이를 반환합니다. |
10 | void setCharAt(int index, char ch) 주어진 인덱스의 문자를 ch 로 설정합니다. |
11 | void setLength(int newLength) 문자 시퀀스의 길이를 설정합니다. |
12 | CharSequence subSequence(int start, int end) 이 시퀀스의 하위 시퀀스인 새 문자 시퀀스를 반환합니다. |
13 | String substring(int start) 현재 이 문자 시퀀스에 포함된 문자 하위 시퀀스를 포함하는 새 String 반환합니다. |
14 | String substring(int start, int end) 현재 이 시퀀스에 포함된 문자의 하위 시퀀스를 포함하는 새 String 반환합니다. |
15 | String toString() 이 시퀀스에 있는 데이터의 문자열 표현을 반환합니다. |