Java에서 String, StringBuffer 및 StringBuilder는 종종 프로그래밍에 문자열 클래스를 사용합니다. 그들 사이의 차이점은 또한 인터뷰에서 종종 묻는 질문입니다. 이제 요약하고 어떻게 다른지, 동일합니다.
1. 가변적이고 불변
문자열 클래스는 문자 배열을 사용하여 다음과 같이 문자열을 저장합니다. "최종"수정자가 있으므로 문자열 객체가 불변이라는 것을 알 수 있습니다.
개인 최종 문자 가치 [];
StringBuilder와 StringBuffer는 모두 AbstractStringBuilder 클래스에서 상속됩니다. AbstractStringBuilder에서 문자 배열은 문자열을 저장하는 데 사용됩니다. 다음과 같이, 두 객체가 모두 변한다는 것을 알 수 있습니다.
char [] 값;
2. 멀티 스레드와 안전입니다
문자열의 객체는 불변이기 때문에 상수로 이해 될 수 있으며, 이는 분명히 실 세상입니다.
AbstractStringBuilder는 StringBuilder 및 StringBuffer의 공개 상위 클래스로, 확장 캡시 틱, 추가, 인서트, 인덱스 및 기타 공개 방법과 같은 문자열의 일부 기본 작업을 정의합니다.
StringBuffer는 메소드에 동기화 잠금을 추가했거나 동기화 잠금을 호출 메소드에 추가하므로 스레드 안전입니다. 다음 소스 코드를 참조하십시오.
public synchronized stringbuffer reverse () {super.reverse (); return this;} public int indexof (string str) {return indexof (str, 0); // 공개 동기화 된 int indexof (string str, int fromIndex) 메소드가 있습니다.StringBuilder는이 방법에 동기화 잠금을 추가하지 않으므로 스레드가 아닌 것입니다.
3. StringBuilder 및 StringBuffer 공통
StringBuilder와 StringBuffer 에는 공개 부모 수업이 있습니다.
추상 클래스와 인터페이스의 차이점 중 하나는 일부 공개 서브 클래스 방법이 추상 클래스에서 정의 될 수 있다는 것입니다. 서브 클래스는 새로운 기능 만 추가하면되며 기존 방법을 반복 할 필요가 없습니다. 인터페이스는 방법과 상수 만 정의합니다.
StringBuilder 및 StringBuffer의 방법은 Super.Append (...)와 같은 AbstractStringBuilder에서 공개 방법을 호출합니다. StringBuffer는 메소드에 동기화 된 키워드를 추가하고 동기화하는 것입니다.
마지막으로, 프로그램이 다중 스레드가 아닌 경우 StringBuilder를 사용하는 것이 StringBuffer보다 효율적입니다.
위의 기사 Java의 String, StringBuffer 및 StringBuilder의 차이점에 대한 심층적 인 분석은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.