Java의 String, StringBuffer 및 StringBuilder는 종종 프로그래밍에 사용되는 문자열 클래스입니다. 요약하면, 그들의 차이점과 동일성을보십시오.
1. 변수 및 변하지 않은
문자열 클래스는 문자열 배열을 사용하여 문자열을 저장합니다.
개인 최종 문자 가치 [];
StringBuilder와 StringBuffer는 AbstractStringBuileder에서 상속됩니다.
char [] 값;
2. 안전합니까?
문자열의 객체는 불변으로 일정하게 이해 될 수 있으며 실은 안전합니다.
AbstractStringBuilder는 StringBuilder와 StringBuffer 사이의 공개 상위 클래스로, ExpandCapacity, Append, Insert, Indexof 및 기타 공개 방법과 같은 일부 문자열의 기본 요원을 정의합니다.
StringBuffer는 동기식 잠금을 추가하거나 호출 메소드가 메소드에 추가되므로 스레드 -safe입니다. 다음 소스 코드를 참조하십시오.
다음과 같이 코드 코드를 복사하십시오.
public synchronized stringbuffer reverse () {{) {
super.reverse ();
이것을 반환하십시오;
}
public int indexof (String str) {
return indexof (str, 0);
}
StringBuilder는이 메소드에 동기식 잠금 장치가 없으므로 스레드되지 않은 보안입니다.
3. StringBuilder 및 StringBuffer 공통
StringBuilder와 StringBuffer에는 공개 부모 -클래스 AbstractStringBuilder (Abstract Class)가 있습니다.
추상 클래스와 인터페이스의 차이점은 다음과 같습니다. 일부 서브 클래스의 일부 공개 방법은 초록 클래스에서만 정의 될 수 있으며, 기존의 방법은 반복적으로 작성할 필요가 없습니다 인터페이스의 메소드.
StringBuilder 및 StringBuffer의 방법은 Super.Appending (...)과 같은 AbstractStringBuilder에서 공개 방법을 호출합니다. StringBuffer가 동기화 된 키워드를 메소드에 동기화하여 동기화하는 것입니다.
마지막으로, 프로그램이 멀티 스레드가 아닌 경우 StringBuilder를 사용하는 효율은 StringBuffer보다 높습니다.