스트링빌더 Java에서는 변경 가능한 문자 시퀀스를 나타냅니다. Java의 String 클래스는 불변 문자 시퀀스를 생성하므로 StringBuilder 클래스는 가변 문자 시퀀스를 생성하므로 String 클래스에 대한 대안을 제공합니다. StringBuilder의 기능은 StringBuffer 클래스와 매우 유사합니다. 둘 다 변경 가능한 문자 시퀀스를 만들어 String 클래스에 대한 대안을 제공하기 때문입니다. 그러나 StringBuilder 클래스는 동기화 방식에 따라 StringBuffer 클래스와 다릅니다. StringBuilder 클래스는 동기화를 보장하지 않지만 StringBuffer 클래스는 동기화를 보장합니다. 따라서 이 클래스는 단일 스레드에서 StringBuffer를 사용하는 위치(일반적인 경우)에서 StringBuffer에 대한 드롭인 대체품으로 사용하도록 설계되었습니다. 가능하다면 이 클래스를 StringBuffer보다 우선적으로 사용하는 것이 좋습니다. 대부분의 구현에서 이 클래스가 더 빠르기 때문입니다. StringBuilder 인스턴스는 여러 스레드에서 사용하기에 안전하지 않습니다. 이러한 동기화가 필요한 경우 StringBuffer를 사용하는 것이 좋습니다. String Builder는 스레드로부터 안전하지 않으며 String 버퍼에 비해 성능이 높습니다.
클래스 계층 구조는 다음과 같습니다.
java.lang.Object ↳ java.lang ↳ Class StringBuilder>
통사론:
public final class StringBuilder extends Object implements Serializable, CharSequence>
Java StringBuilder 클래스의 생성자
- StringBuilder(): 문자가 없고 초기 용량이 16자인 문자열 작성기를 구성합니다. StringBuilder(int 용량): 문자가 없고 용량 인수로 지정된 초기 용량을 사용하여 문자열 작성기를 구성합니다. StringBuilder(CharSequence seq): 지정된 CharSequence와 동일한 문자를 포함하는 문자열 작성기를 구성합니다. StringBuilder(String str): 지정된 문자열의 내용으로 초기화된 문자열 작성기를 구성합니다.
다음은 Java에서 StringBuilder를 설명하는 샘플 프로그램입니다.
자바
병합 정렬 자바
// Java Code to illustrate StringBuilder> import> java.util.*;> import> java.util.concurrent.LinkedBlockingQueue;> public> class> GFG1 {> >public> static> void> main(String[] argv)>throws> Exception> >{> >// Create a StringBuilder object> >// using StringBuilder() constructor> >StringBuilder str =>new> StringBuilder();> >str.append(>'GFG'>);> >// print string> >System.out.println(>'String = '> + str.toString());> >// create a StringBuilder object> >// using StringBuilder(CharSequence) constructor> >StringBuilder str1> >=>new> StringBuilder(>'AAAABBBCCCC'>);> >// print string> >System.out.println(>'String1 = '> + str1.toString());> >// create a StringBuilder object> >// using StringBuilder(capacity) constructor> >StringBuilder str2 =>new> StringBuilder(>10>);> >// print string> >System.out.println(>'String2 capacity = '> >+ str2.capacity());> >// create a StringBuilder object> >// using StringBuilder(String) constructor> >StringBuilder str3> >=>new> StringBuilder(str1.toString());> >// print string> >System.out.println(>'String3 = '> + str3.toString());> >}> }> |
>
>산출
String = GFG String1 = AAAABBBCCCC String2 capacity = 10 String3 = AAAABBBCCCC>
Java StringBuilder의 메소드
StringBuilder 추가(X x) : 이 메서드는 X 유형 인수의 문자열 표현을 시퀀스에 추가합니다.
- StringBuilderappendCodePoint(int codePoint) : 이 메서드는 codePoint 인수의 문자열 표현을 이 시퀀스에 추가합니다.
- 정수 용량() : 현재 용량을 반환하는 메서드입니다.
- char charAt(정수 인덱스) : 이 메소드는 지정된 인덱스에서 이 시퀀스의 char 값을 반환합니다. IntStream chars() : 이 메서드는 이 시퀀스의 char 값을 0으로 확장하는 int 스트림을 반환합니다.
- int codePointAt(int 인덱스) : 이 메서드는 지정된 인덱스에 있는 문자(유니코드 코드 포인트)를 반환합니다.
- int codePointBefore(int 인덱스) : 이 메서드는 지정된 인덱스 앞의 문자(유니코드 코드 포인트)를 반환합니다.
- int codePointCount(int startIndex, int endIndex) : 이 메서드는 이 시퀀스의 지정된 텍스트 범위에 있는 유니코드 코드 포인트의 수를 반환합니다. IntStream codePoints() : 이 메서드는 이 시퀀스에서 코드 포인트 값의 스트림을 반환합니다.
- StringBuilder 삭제(int 시작, int 끝) : 이 메서드는 이 시퀀스의 하위 문자열에 있는 문자를 제거합니다. StringBuilder deleteCharAt(int index) : 이 메서드는 이 시퀀스의 지정된 위치에서 문자를 제거합니다.
- void verifyCapacity(int maximumCapacity) : 이 방법을 사용하면 용량이 지정된 최소값 이상인지 확인됩니다.
- 무효 getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) : 이 메서드 문자는 이 시퀀스에서 대상 문자 배열 dst로 복사됩니다.
- 정수 indexOf() : 이 메서드는 이 문자열 내에서 지정된 하위 문자열이 처음 나타나는 인덱스를 반환합니다. StringBuilder insert(int offset, boolean b) : 이 메서드는 부울 대체 인수의 문자열 표현을 이 시퀀스에 삽입합니다. StringBuilder insert() : 이 메소드는 char 인수의 문자열 표현을 이 시퀀스에 삽입합니다.
- 정수형 lastIndexOf() : 이 메서드는 이 문자열 내에서 지정된 하위 문자열이 마지막으로 나타나는 인덱스를 반환합니다.
- 정수 길이() : 이 메서드는 길이(문자 수)를 반환합니다. int offsetByCodePoints(int index, int codePointOffset) : 이 메서드는 codePointOffset 코드 포인트만큼 지정된 인덱스에서 오프셋된 이 시퀀스 내의 인덱스를 반환합니다.
- StringBuilder 교체(int start, int end, String str) : 이 메서드는 이 시퀀스의 하위 문자열에 있는 문자를 지정된 문자열의 문자로 바꿉니다.
- StringBuilder 역방향() : 이 방법을 사용하면 이 문자 시퀀스가 시퀀스의 역순으로 대체됩니다.
- void setCharAt(int index, char ch) : 이 방법에서는 지정된 인덱스의 문자를 ch로 설정합니다.
- 무효 setLength(int newLength) : 이 방법은 문자 시퀀스의 길이를 설정합니다.
- CharSequence 하위 시퀀스(int start, int end) : 이 메서드는 이 시퀀스의 하위 시퀀스인 새 문자 시퀀스를 반환합니다.
- 문자열 하위 문자열() : 이 메서드는 현재 이 문자 시퀀스에 포함된 문자의 하위 시퀀스를 포함하는 새 문자열을 반환합니다.
- 문자열 toString() : 이 메서드는 이 시퀀스의 데이터를 나타내는 문자열을 반환합니다.
- 무효 TrimToSize() : 이 방법은 문자 시퀀스에 사용되는 저장 공간을 줄이려고 시도합니다.
예:
자바
// Java code to illustrate> // methods of StringBuilder> import> java.util.*;> import> java.util.concurrent.LinkedBlockingQueue;> public> class> GFG1 {> >public> static> void> main(String[] argv)> >throws> Exception> >{> >// create a StringBuilder object> >// with a String pass as parameter> >StringBuilder str> >=>new> StringBuilder(>'AAAABBBCCCC'>);> >// print string> >System.out.println(>'String = '> >+ str.toString());> >// reverse the string> >StringBuilder reverseStr = str.reverse();> >// print string> >System.out.println(>'Reverse String = '> >+ reverseStr.toString());> >// Append ', '(44) to the String> >str.appendCodePoint(>44>);> >// Print the modified String> >System.out.println(>'Modified StringBuilder = '> >+ str);> >// get capacity> >int> capacity = str.capacity();> >// print the result> >System.out.println(>'StringBuilder = '> + str);> >System.out.println(>'Capacity of StringBuilder = '> >+ capacity);> >}> }> |
>
>산출
String = AAAABBBCCCC Reverse String = CCCCBBBAAAA Modified StringBuilder = CCCCBBBAAAA, StringBuilder = CCCCBBBAAAA, Capacity of StringBuilder = 27>
StringBuilder는 문자열을 조작하는 데 사용되는 Java의 또 다른 클래스입니다. StringBuffer와 마찬가지로 이는 자신이 나타내는 문자열의 내용을 수정할 수 있는 변경 가능한 클래스입니다. 그러나 StringBuilder는 스레드로부터 안전하지 않으므로 다중 스레드 환경에서 사용하면 안 됩니다.
다음은 Java에서 StringBuilder를 사용하는 방법에 대한 몇 가지 예입니다.
자바
예각
public> class> StringBuilderExample {> >public> static> void> main(String[] args) {> >StringBuilder sb =>new> StringBuilder();> >sb.append(>'Hello'>);> >sb.append(>' '>);> >sb.append(>'world!'>);> >System.out.println(sb.toString());>// Output: 'Hello world!'> > >sb.insert(>6>,>'beautiful '>);> >System.out.println(sb.toString());>// Output: 'Hello beautiful world!'> > >sb.reverse();> >System.out.println(sb.toString());>// Output: '!dlrow lufituaeb olleH'> >}> }> |
>
>산출
Hello world! Hello beautiful world! !dlrow lufituaeb olleH>