Java에서 String, StringBuffer, StringBuilder의 차이점 상세 정보

자바에서 String, String Buffer, String Builder는 프로그래밍에서 자주 사용하는 문자열 클래스로 이들의 차이점도 면접에서 자주 묻는 질문이다.지금 총결하여 그들의 차이와 동일함을 보아라.
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

좋은 웹페이지 즐겨찾기