Java에서 String, StringBuffer, StringBuilder의 차이점 상세 정보
1. 가변 및 가변
String 클래스에서 문자열 그룹을 사용하여 문자열을 저장합니다. 다음과 같습니다. "final"수식자가 있기 때문에string 대상이 변할 수 없다는 것을 알 수 있습니다.
private final char value[];
StringBuilder와 StringBuffer는 모두 AbstractStringBuilder 클래스에서 계승되고 AbstractStringBuilder에서도 문자열 그룹을 사용하여 문자열을 저장합니다. 다음과 같이 두 대상이 모두 가변적임을 알 수 있습니다.
char[] value;
2. 다중 스레드 안전 여부
String의 대상은 변할 수 없고 상량으로 이해할 수 있으며 분명히 라인이 안전합니다.
AbstractStringBuilder는 StringBuilder와 StringBuffer의 공공 부류로 expandCapacity, append, insert, indexOf 등 일부 문자열의 기본 동작을 정의했다.
StringBuffer는 방법에 동기화 자물쇠를 추가하거나 호출하는 방법에 동기화 자물쇠를 추가하기 때문에 라인이 안전합니다.다음 소스 코드를 참조하십시오.
public synchronized StringBuffer reverse() {
super.reverse();
return this;
}
public int indexOf(String str) {
return indexOf(str, ); // public synchronized int indexOf(String str, int fromIndex)
}
StringBuilder는 메서드에 동기식 잠금을 추가하지 않으므로 비스레드가 안전합니다.3. StringBuilder와 StringBuffer의 공통점
StringBuilder와 StringBuffer는 공통 상위 AbstractStringBuilder(추상 클래스)가 있습니다.
추상류와 인터페이스의 차이점은 추상류에서 일부 자류의 공공 방법을 정의할 수 있고 자류는 새로운 기능만 추가하고 이미 존재하는 방법을 중복적으로 쓸 필요가 없다는 것이다.인터페이스는 방법에 대한 설명과 상량의 정의일 뿐이다.
StringBuilder, StringBuffer의 방법은 모두 AbstractStringBuilder의 공공 방법, 예를 들어 슈퍼를 호출합니다.append(...).다만 StringBuffer는 방법에 synchronized 키워드를 추가하여 동기화합니다.
마지막으로 프로그램이 다중 루틴이 아니라면 StringBuilder를 사용하면 StringBuffer보다 효율이 높습니다.
java에서 String String Buffer String Builder의 차이점
* String 클래스는 변경할 수 없는 클래스로 String을 수정하면 새 객체가 생성됩니다.
* StringBuffer와 StringBuilder는 모두 가변 클래스로 문자열의 변경에도 새 객체가 생성되지 않습니다.
실제로 사용할 때, 삽입, 삭제 등 문자열을 자주 수정해야 한다면
* 그러나 StringBuffer와 StringBuilder는 어떤 차이가 있습니까?
StringBuffer는 스레드가 안전하고 다중 스레드 프로그램에서 사용하기 편리하지만 프로그램의 효율은 좀 느려진다.
StringBuilder는 스레드가 안전하지 않습니다. 단일 스레드에서 StringBuffer보다 효율이 높습니다.
* 종합적으로 보면 다음과 같은 세 가지 작동 시간:
String > StringBuffer > StringBuilder
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.