문자열에서 stringbuffer와 stringbuilder의 차이점은 다음과 같습니다. 1. StringBuffer는 스레드로부터 안전하지만 StringBuilder는 스레드로부터 안전하지 않습니다. 2. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!