>  기사  >  Java  >  문자열에서 stringbuffer와 stringbuilder의 차이점은 무엇입니까?

문자열에서 stringbuffer와 stringbuilder의 차이점은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-02 14:14:424938검색

문자열에서 stringbuffer와 stringbuilder의 차이점은 다음과 같습니다. 1. StringBuffer는 스레드로부터 안전하지만 StringBuilder는 스레드로부터 안전하지 않습니다. 2. StringBuffer는 메서드 동기화를 노출하지만 StringBuilder는 그렇지 않습니다.

문자열에서 stringbuffer와 stringbuilder의 차이점은 무엇입니까?

문자열에서 stringbuffer와 stringbuilder의 차이점은 다음과 같습니다.

차이점 1: 스레드 안전성

StringBuffer: 스레드 안전, StringBuilder: 스레드 안전하지 않음. StringBuffer의 모든 공개 메소드는 동기화되고 StringBuilder는 StringBuilder가 수정되지 않기 때문입니다.

StringBuffer 코드 조각:

@Override
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);
    return this;
}

차이 2: 버퍼

StringBuffer 코드 조각:

private transient char[] toStringCache;
@Override
public synchronized String toString() {
    if (toStringCache == null) {
        toStringCache = Arrays.copyOfRange(value, 0, count);
    }
    return new String(toStringCache, true);
}

StringBuilder 코드 조각:

@Override
public String toString() {
    // Create a copy, don't share the array
    return new String(value, 0, count);
}

StringBuffer가 toString을 가져올 때마다 toStringCache 값을 직접 사용한다는 것을 알 수 있습니다. 캐시 영역을 구성합니다.

StringBuilder는 매번 문자 배열을 복사한 다음 문자열을 구성해야 합니다.

그래서 캐시 플러시도 StringBuffer의 최적화이지만 StringBuffer의 toString 메서드는 여전히 동기식입니다.

차이점 3: 성능

StringBuffer는 스레드로부터 안전하기 때문에 모든 공개 메서드가 동기화되고 StringBuilder는 메서드를 잠그거나 동기화하지 않으므로 StringBuilder의 성능이 StringBuffer보다 훨씬 높다는 것은 의심의 여지가 없습니다.

관련 학습 권장사항: Java 비디오 튜토리얼

위 내용은 문자열에서 stringbuffer와 stringbuilder의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.