수색…


소개

Java StringBuilder 클래스는 변경 가능한 (수정 가능한) 문자열을 만드는 데 사용됩니다. Java StringBuilder 클래스는 비동기 성을 제외하면 StringBuffer 클래스와 동일합니다. JDK 1.5부터 사용할 수 있습니다.

통사론

  • 새 StringBuilder ()

  • 새로운 StringBuilder (int 용량)

  • 새 StringBuilder (CharSequence seq)

  • 새로운 StringBuilder (StringBuilder 빌더)

  • 새 StringBuilder (문자열 문자열)

  • 새로운 StringJoiner (CharSequence 단락 문자)

  • 새로운 StringJoiner (CharSequence의 단락 문자, CharSequence 접두사, CharSequence 접미 말)

비고

char 형을 매개 변수로 사용하여 새 StringBuilder 를 작성하면 인수가 int capacity 이고 생성자는 String string 아닌 생성자를 호출하게됩니다.

 StringBuilder v = new StringBuilder('I'); //'I' is a character, "I" is a String.
 System.out.println(v.capacity()); --> output 73
 System.out.println(v.toString()); --> output nothing

문자열을 n 번 반복합니다.

문제 : String s n 반복을 포함하는 String 을 생성하십시오.

사소한 접근법은 String 반복적으로 연결하는 것입니다.

final int n = ...
final String s = ...
String result = "";

for (int i = 0; i < n; i++) {
    result += s;
}

이 생성 n 에 1을 함유하는 새로운 캐릭터 인스턴스 n 의 반복 s 의 실행 결과 O(s.length() * n²) = O(s.length() * (1+2+...+(n-1)+n)) .

이 문제를 피하려면 StringBuilder 를 사용하여 대신 O(s.length() * n) String 을 만들 수 있습니다.

final int n = ...
final String s = ...

StringBuilder builder = new StringBuilder();

for (int i = 0; i < n; i++) {
    builder.append(s);
}

String result = builder.toString();

StringBuffer, StringBuilder, Formatter 및 StringJoiner 비교하기

StringBuffer , StringBuilder , FormatterStringJoiner 클래스는 주로 기타 정보의 문자열을 어셈블하는 데 사용되는 Java SE 유틸리티 클래스입니다.

  • StringBuffer 클래스는, Java 1.0 이후에 존재 해, 일련의 문자를 포함한 「버퍼」를 구축 및 변경하기위한 다양한 메소드를 제공합니다.

  • 원래 StringBuffer 클래스의 성능 문제를 해결하기 위해 Java 5에서 StringBuilder 클래스가 추가되었습니다. 두 개의 clases에 대한 API는 본질적으로 동일합니다. StringBufferStringBuilder 의 주요 차이점은 전자는 스레드로부터 안전하고 동기화되었으며 후자는 그렇지 않다는 점입니다.

이 예제에서는 StringBuilder 를 사용하는 방법을 보여줍니다.

int one = 1;
String color = "red";
StringBuilder sb = new StringBuilder();
sb.append("One=").append(one).append(", Color=").append(color).append('\n');
System.out.print(sb);
// Prints "One=1, Colour=red" followed by an ASCII newline.

( StringBuffer 클래스는 같은 방식으로 사용됩니다. 위의 경우 StringBuilderStringBuffer 로 변경하십시오.)

StringBufferStringBuilder 클래스는 문자열을 조합하고 수정하는 데 적합합니다. 즉, 문자를 대체하거나 제거하는 방법과 다양한 문자를 추가하는 방법을 제공합니다. remaming 두 클래스는 문자열을 조합하는 작업에만 적용됩니다.

  • Formatter 클래스는 Java 5에서 추가되었으며 C 표준 라이브러리의 sprintf 함수에서 느슨하게 모델링되었습니다. 형식 지정자 와 다른 인수의 시퀀스가있는 형식 문자열을 가져 와서 인수를 텍스트로 변환하고 형식 지정자 대신이를 대체하여 문자열을 생성합니다. 형식 지정자의 세부 사항은 인수가 텍스트로 변환되는 방식을 말합니다.

  • StringJoiner 클래스는 Java 8에 추가되었습니다. 특별한 목적의 포맷터로, 문자열 사이에 구분 기호로 문자열을 간결하게 포맷합니다. 유창한 API로 설계되었으며 Java 8 스트림과 함께 사용할 수 있습니다.

다음은 Formatter 사용의 전형적인 예입니다.

// This does the same thing as the StringBuilder example above
int one = 1;
String color = "red";
Formatter f = new Formatter();
System.out.print(f.format("One=%d, colour=%s%n", one, color));
// Prints "One=1, Colour=red" followed by the platform's line separator

// The same thing using the `String.format` convenience method
System.out.print(String.format("One=%d, color=%s%n", one, color));

StringJoiner 클래스는 위의 작업에 이상적이지 않으므로 여기에 문자열 배열의 예제가 있습니다.

StringJoiner sj = new StringJoiner(", ", "[", "]");
for (String s : new String[]{"A", "B", "C"}) {
    sj.add(s);
}
System.out.println(sj);
// Prints "[A, B, C]"

4 개 클래스의 유스 케이스를 요약 할 수 있습니다.

  • 모든 문자열 어셈블리 또는 문자열 수정 작업에 적합한 StringBuilder 입니다.
  • StringBuffer 는 스레드 안전 버전의 StringBuilder 필요할 때만 사용합니다.
  • Formatter 는 훨씬 풍부한 문자열 형식화 기능을 제공하지만 StringBuilder 만큼 효율적이지 않습니다. 이것은 Formatter.format(...) 호출 할 때마다 다음과 같은 작업이 필요하기 때문입니다.
    • format 문자열 파싱,
    • varargs 배열을 생성하고 채 웁니다.
    • 원시 타입의 인자를 오토 박싱하는 것.
  • StringJoinerStringJoiner 하여 문자열의 시퀀스를 간결하고 효율적으로 포맷하지만 다른 포맷 작업에는 적합하지 않습니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow