Package
- java.lang.Object
- java.lang.StringBuilder
- java.lang.StringBuffer
StringBuilder 란?
A mutable sequence of characters. This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations.
StringBuilder는 변경 가능한 문자열이다.
이 클래스는 StringBuffer와 호환되는 API를 제공한다.
그러나 StringBuilder는 동기화의 보장이 없다. ( StringBuffer는 동기화 보장이 된다. )
이 클래스는 단일 스레드에서 문자열 버퍼를 사용하던 곳에서 StringBuffer의 대체품으로 사용하도록 설계되었다.
가능하다면 대부분의 구현에서 이 클래스가 더 빠르기 때문에 StringBuffer보다 우선적으로 사용하는 것이 좋다.
The principal operations on a StringBuilder are the append and insert methods, which are overloaded so as to accept data of any type. Each effectively converts a given datum to a string and then appends or inserts the characters of that string to the string builder. The append method always adds these characters at the end of the builder; the insert method adds the characters at a specified point.
StringBuilder의 주요 작업은 모든 유형의 데이터를 허용하도록 오버로드 되는 추가 및 삽입 메서드다.
각각은 주어진 데이터를 문자열로 효과적으로 변환한 다음 해당 문자열의 문자를 문자열 빌더에 추가하거나 삽입한다.
Every string builder has a capacity. As long as the length of the character sequence contained in the string builder does not exceed the capacity, it is not necessary to allocate a new internal buffer. If the internal buffer overflows, it is automatically made larger.
모든 문자열 빌더는 용량이 있다.
문자열 빌더에 포함된 문자열의 길이가 용량을 초과하지 않는 한 새로운 내부 버퍼를 할당할 필요가 없다. 내부 버퍼가 오버플로되면 자동으로 더 커진다.
StringBuffer 란?
A thread-safe, mutable sequence of characters. A string buffer is like a String, but can be modified.
String buffers are safe for use by multiple threads.
The methods are synchronized where necessary so that all the operations on any particular instance behave as if they occur in some serial order that is consistent with the order of the method calls made by each of the individual threads involved.
스레드로부터 안전하게 변경할 수 있는 문자열이다.
문자열 버퍼는 여러 스레드에서 사용하기에 안전하다.
메서드는 필요한 경우 동기화되어 특정 인스턴스의 모든 작업은 관련된 각 스레드가 만든 메서드 호출의 순서와 일치하는 일련의 순서로 발생하는 것처럼 동작한다.
StringBuilder && StringBuffer Class Constructor
StringBuilder() : 스트링 빌더 기본 생성자
- 용량을 지정하지 않을 경우 초기 용량은 16자의 문자열 빌더를 구성한다
StringBuilder sb = new StringBuilder();
sb.capacity();
// 16
StringBuilder(int capacity) : 스트링 빌더의 용량을 지정한 생성자
StringBuilder sbCapacity = new StringBuilder(10);
sbCapacity.capacity();
// 10
StringBuilder(CharSequence seq) : CharSequence의 매개변수를 받는 생성자
CharSequence c = "h";
StringBuilder sbCharSequence = new StringBuilder(c);
// h
StringBuilder(String str) : 문자열을 매개변수로 받는 생성자
StringBuilder sbString = new StringBuilder("문자열");
// 문자열
StringBuilder && StirngBuffer Class Method
변수 생성
StringBuilder data = new StringBuilder("abcde");
append() : 문자열의 맨 뒤에 추가한다.
StringBuilder sb = new StringBuilder();
sb.append(true); // boolean
sb.append("\n");
sb.append('a'); // char
sb.append("\n");
sb.append(new char[]{'b', 'c', 'd'}, 1, 2); // char[]
sb.append("\n");
sb.append(3.14); // double
sb.append("\n");
sb.append(0.0001f); // float
sb.append("\n");
sb.append(999); // int
sb.append("\n");
sb.append(100000000l); // long
sb.append("\n");
sb.append(new Object()); // object
sb.append("\n");
sb.append("문자열"); // string
sb.append("\n");
sb.append(new StringBuffer("버퍼")); // string buffer
// true
// a
// cd
// 3.14
// 1.0E-4
// 999
// 100000000
// java.lang.Object@1e643faf
// 문자열
// 버퍼
appendCodePoint(int codePoint) : 유니코드 코드포인트가 표현된다
- 코드포인트는 유니코드표에 작성된 문자에 부여한 고유 번호
StringBuilder sbCodePoint = new StringBuilder();
sbCodePoint.appendCodePoint(1000);
sbCodePoint.appendCodePoint(2000);
sbCodePoint.appendCodePoint(3000);
// Ϩߐஸ
capacity() : 현재 용량을 반환한다
int capacity = sb.capacity();
// 70
charAt(int index) : 지정된 인덱스의 문자열 값을 반환한다
char c = sb.charAt(5);
// a
chars() : 문자 값들을 IntStream으로 반환한다.
IntStream chars = data.chars();
// [97, 98, 99, 100, 101]
codePointAt(int index) : 인덱스 위치의 코드포인트의 값을 반환한다
int i = sb.codePointAt(5);
// 97
codePointbefore(int index) : 인덱스 위치 앞의 코드포인트 값을 반환한다
int i1 = sb.codePointBefore(6);
// 97
codePointCount(int beginIndex, int endIndex) : 코드포인트의 시작과 끝의 값을 세서 반환한다
int i2 = sb.codePointCount(0, 10);
// 10
codePoints() : 이 문자열의 코드포인트 값들을 반환한다.
IntStream intStream = data.codePoints();
// [97, 98, 99, 100, 101]
compareTo(StringBuilder another) : 문자열을 사전순으로 비교한 차이의 값을 반환한다
int i3 = sb.compareTo(data);
// 19
delete(int start, int end) : 이 문자열의 부분 문자를 제거한다
StringBuilder delete = data.delete(0, 2);
// cde
deleteCharAt(int index) : 이 문자열의 지정한 포지션에 대한 문자를 제거한다
StringBuilder stringBuilder = data.deleteCharAt(1);
// ce
indexOf(String str) : 지정한 문자에 대한 인덱스 값을 반환한다
int c1 = data.indexOf("e");
// 1
lastIndexOf(String str) : 지정한 문자에 대해 뒤에서 부터 인덱스 값을 찾아 반환한다.
int c2 = data.indexOf("c");
// 0
insert(int offset, object ....) : 문자열에 매개변수 값을 삽입한다
StringBuilder stb = data.insert(1, " data insert in center ");
// c data insert in center e
length() : 문자열의 길이를 반환한다
int length = stb.length();
// 25
reverse() : 문자열을 뒤집어서 교체한다.
StringBuilder reverse = stb.reverse();
// e retnec ni tresni atad c
setCharAt(int index, char ch) : 지정한 인덱스 위치의 문자를 교체한다
stb.setCharAt(0,'a');
// a retnec ni tresni atad c
setLength(int newLength) : 문자열의 길이를 지정한다.
stb.setLength(5);
// a ret
substring(int start, int end) : 문자열을 시작 위치부터 종료 앞 위치까지 잘라내어 반환한다
String substring = stb.substring(1, 4);
// re
'Programming > Backend' 카테고리의 다른 글
TDD : 테스트 주도 개발 (0) | 2021.10.03 |
---|---|
API 명세서 뜯어보기 - Functional interface (0) | 2021.10.02 |
API 명세서 뜯어보기 - String Class (0) | 2021.09.27 |
자바 기초 다지기 -7 (네트워크, Java7, Java8) (0) | 2021.09.26 |
자바 기초 다지기 - 6 (Thread, Syncronized, Serializable, IO, NIO) (0) | 2021.09.13 |