문자열은 간단한 유형이 아니라 일련의 문자를 나타내는 데 사용되는 클래스입니다. 문자 자체는 유니 코드 표준을 준수하며 초기화하는 두 가지 방법이 있습니다.
예를 들면 : 문자열 인사 = "좋은 아침! /n";
문자열 인사 = 새 문자열 (= "좋은 아침! /n");
문자열의 특성은 일단 할당되면 변경할 수없는 캐릭터 객체는 새로운 문자 객체를 가리 킵니다.
StringBuffer는 객체 참조 통과의 특성을 가진 문자열 객체입니다.
StringBuffer 객체는 메소드를 호출하여 작업을 동적으로 늘리고 삽입, 수정 및 삭제할 수 있으며 배열처럼 크기를 미리 지정할 필요가 없어 문자를 여러 번 삽입하고 한 번에 제거하는 효과를 달성 할 필요가 없습니다. , 문자열을 작동하는 것은 매우 유연하고 편리합니다.
최종 원하는 문자열이 StringBuffer를 통해 생성되면 문자열 객체로 변환하기 위해 TOSTRING 메소드라고 할 수 있습니다.
문자열 처리 에서이 두 클래스의 위치는 자명하고 그들의 장점과 단점은 무엇이며 언제 누구를 사용해야합니까? 다음 사항에서 설명해 봅시다
1. 실행 속도 측면에서 두 가지 비교 : StringBuffer> String
2.String <StringBuffer 이유 문자열 : String Constant StringBuffer : 위의 이름에서 문자 생성 변수, String은 "캐릭터 생성 상수", 즉 변경 할 수없는 객체입니다. 이 코드와 같이이 문장을 이해하는 것에 대한 질문이있을 수 있습니다.
문자열 S = "ABCD";
우리는 분명히 문자열 변수를 변경했습니다. 왜 JVM은이 코드를 구문 분석하고, ABCD를 제공 한 다음 새 코드를 구문 분석합니다. 하나의 객체는 두 번째 코드 줄을 실행하는 데 사용됩니다. 즉, 객체 S는 이전에 변경되지 않았으므로 문자열이 문자열로 작동 할 때마다 문자열 유형이 변하지 않는 객체라고합니다. 실제로 새로운 객체는 끊임없이 생성되며 원래 물체는 쓰레기가되어 GC가 수집 할 수 있습니다.
그러나 StringBuffers는 문자열 변수이며 문자열에서 작동 할 때마다 실제로 객체에서 작동하여 문자열과 같은 것을 만들지 않고 외부 객체가 작동하는 경우. 속도가 더 빠릅니다
3. 특별한 예 :
코드 사본은 다음과 같습니다.
String str = "이것은 단지" + "simple" + "test"입니다.
StringBuffer Builder = New StringBuilder ( "이것은 단지 A"). Append ( "Simple"). Append ( "Test");
STR 물체를 생성하는 속도가 너무 빠르며 현재 StringBuffer는 속도가 전혀 이점이 없다는 사실에 놀랄 것입니다. 실제로 이것은 JVM의 속임수입니다.
String str = "이것은 단지" + "simple" + "test"입니다.
실제로:
문자열 str =“이것은 단순한 테스트 일뿐입니다”;
따라서 시간이 많이 걸리지 않습니다. 그러나 여기서 주목해야 할 것은 문자열이 다른 문자열 객체에서 나오면 속도가 빠르지 않다는 것입니다.
String str2 = "String str3";
현재 JVM은 원래 방식으로 정기적으로 수행합니다.
4.StringBuilder 및 StringBuffer
StringBuilder : 보안이 아닌 StringBuffer : 스레드-세이프 스트링 버퍼의 여러 스레드에서 사용하면 JVM은 StringBuilder의 작동이 가장 빠른 속도를 가지고 있음을 보장 할 수는 없지만 StringBuffer가 올바르게 작동 할 수 있습니다. . 의. 물론 대부분의 경우 단일 스레드에서 작동하므로 대부분의 경우 StringBuffer 대신 StringBuilder를 사용하는 것이 좋습니다. 이것이 속도의 이유입니다.
세 가지 사용 요약 :
1. 소량의 데이터를 작동하려면 aude = string
2. 단일 스레드 문자열 버퍼에서 많은 양의 데이터를 작동합니다. = StringBuilder
3. 다중 스레드 스트링 버퍼에서 많은 양의 데이터를 작동합니다. = StringBuffer