Java Language
StringBuilder
수색…
소개
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
, Formatter
및 StringJoiner
클래스는 주로 기타 정보의 문자열을 어셈블하는 데 사용되는 Java SE 유틸리티 클래스입니다.
StringBuffer
클래스는, Java 1.0 이후에 존재 해, 일련의 문자를 포함한 「버퍼」를 구축 및 변경하기위한 다양한 메소드를 제공합니다.원래
StringBuffer
클래스의 성능 문제를 해결하기 위해 Java 5에서StringBuilder
클래스가 추가되었습니다. 두 개의 clases에 대한 API는 본질적으로 동일합니다.StringBuffer
와StringBuilder
의 주요 차이점은 전자는 스레드로부터 안전하고 동기화되었으며 후자는 그렇지 않다는 점입니다.
이 예제에서는 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
클래스는 같은 방식으로 사용됩니다. 위의 경우 StringBuilder
를 StringBuffer
로 변경하십시오.)
StringBuffer
및 StringBuilder
클래스는 문자열을 조합하고 수정하는 데 적합합니다. 즉, 문자를 대체하거나 제거하는 방법과 다양한 문자를 추가하는 방법을 제공합니다. 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 배열을 생성하고 채 웁니다.
- 원시 타입의 인자를 오토 박싱하는 것.
-
-
StringJoiner
는StringJoiner
하여 문자열의 시퀀스를 간결하고 효율적으로 포맷하지만 다른 포맷 작업에는 적합하지 않습니다.