문자열 문자열 상수
StringBuffer 문자열 변수 (스레드 금고)
StringBuilder String variable (스레드 안전 금고)
간단히 말해서, 문자열 유형과 StringBuffer 유형의 주요 성능 차이는 실제로 문자열이 불변의 객체입니다. 따라서 문자열 유형을 변경할 때마다 실제로 새 문자열 객체를 생성하고 포인터를 새 문자열 객체를 가리키는 것과 같습니다. 따라서 객체가 생성 될 때마다 시스템 성능에 영향을 미치기 때문에 컨텐츠를 종종 변경하는 문자열에 문자열을 사용하지 않는 것이 가장 좋습니다. 특히 메모리에 참조 된 객체가 너무 많으면 JVM의 GC가 작동하기 시작하므로 매우 느립니다.
StringBuffer 클래스를 사용하면 결과가 다릅니다. 마다 결과가 새 개체를 생성 한 다음 객체 참조를 변경하는 대신 StringBuffer 객체 자체에서 작동 할 때마다. 따라서 일반적으로 StringBuffer를 사용하는 것이 좋습니다. 특히 String 객체가 종종 변경 될 때 일부 특별한 경우, 문자열 객체의 문자열 스 플라이 싱은 실제로 JVM에 의해 StringBuffer 객체의 스 플라이 싱으로 해석됩니다. 따라서 문자열 객체의 속도는이 시간에 StringBuffer 객체보다 느리지 않습니다. 특히 다음 문자열 객체 생성에서 문자열 효율은 StringBuffer보다 훨씬 빠릅니다.
문자열 s1 = "이것은 단지" + "simple" + "test"입니다.
StringBuffer sb = new StringBuilder ( "이것은 단지 A"). Append ( "Simple"). Append ( "Test");
String S1 객체를 생성하는 속도가 너무 빠르며 현재 StringBuffer는 속도에 대한 이점이 없습니다. 실제로 이것은 JVM의 속임수입니다. JVM의 눈에는 이것입니다
문자열 s1 = "이것은 단지" + "simple" + "test"입니다. 실제로 그것은 다음과 같습니다.
문자열 s1 = "이것은 간단한 테스트 일뿐입니다"; 물론 너무 많은 시간이 걸리지 않습니다. 하지만 여기서 주목해야 할 것은 문자열이 다른 사람에게서 오면
문자열 객체의 경우 속도가 빠르지 않습니다.
문자열 s2 =“이것은 단지 a”;
문자열 s3 = "단순";
문자열 s4 = "테스트";
문자열 S1 = S2 + S3 + S4;
현재 JVM은 원래 방식으로 정기적으로 수행합니다.
대부분의 경우 StringBuffer> String
StringBuffer
java.lang.stringbuffer 스레드-안전한 변이성 문자 시퀀스. 문자열과 같은 문자열 버퍼이지만 수정할 수 없습니다. 어느 시점에서나 특정 문자 순서가 포함되어 있지만 일부 메소드 호출에 의해 시퀀스의 길이와 내용을 변경할 수 있습니다.
문자열 버퍼는 여러 스레드에 안전하게 사용할 수 있습니다. 이러한 방법은 필요할 때 동기화 될 수 있으므로 특정 인스턴스의 모든 작업은 관련된 각 스레드에서 작성한 메소드 호출 순서와 일치하는 직렬 순서로 발생하는 것 같습니다.
StringBuffer의 주요 작업은 Append and Insert 메소드이며 모든 유형의 데이터를 수락하도록 과부하 할 수 있습니다. 각 메소드는 주어진 데이터를 효과적으로 문자열로 변환 한 다음 해당 문자열의 문자를 문자열 버퍼에 추가 또는 삽입 할 수 있습니다. Append 메소드는 항상 버퍼 끝에 이러한 문자를 추가합니다. 삽입 메소드는 지정된 지점에서 문자를 추가합니다.
예를 들어, z가 현재 내용이 "시작"인 문자열 버퍼 객체를 참조하면이 메소드는 z.append ( "le")에 문자열 버퍼에 "stractle"을 포함하고 z.insert (4, "le")에 "스타 렛"을 포함하도록 문자열 버퍼를 변경합니다.
대부분의 경우 StringBuilder> StringBuffer
java.lang.stringbuilde
java.lang.stringBuilder 가변 문자 순서는 5.0에서 새로 제공됩니다. 이 클래스는 StringBuffer 호환 API를 제공하지만 동기화되지는 않습니다. 이 클래스는 문자열 버퍼가 단일 스레드에서 사용될 때 StringBuffer를 간단하게 대체하도록 설계되었습니다 (일반적). 가능하면 대부분의 구현에서 StringBuffer보다 빠르기 때문에이 클래스를 먼저 차지하는 것이 좋습니다. 둘 다의 방법은 기본적으로 동일합니다.
위는 Java String, StringBuffer 및 StringBuilder에 대한 정보를 편집 한 것입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 웹 사이트를 지원 해주셔서 감사합니다!