문자열 객체는 변할 수 없습니다. System.String 클래스의 메소드 중 하나를 사용할 때마다 메모리에 새 문자열 객체를 만들어야하므로 새 개체에 새 공간을 할당해야합니다. 새 문자열 객체 생성과 관련된 시스템 오버 헤드는 문자열에서 반복 된 수정을 수행 해야하는 상황에서 매우 비쌀 수 있습니다. 새 개체를 만들지 않고 문자열을 수정하려면 System.text.stringBuilder 클래스를 사용할 수 있습니다. 예를 들어, StringBuilder 클래스를 사용하면 많은 문자열을 루프로 연결할 때 성능이 향상 될 수 있습니다.
오버로드 된 생성자 메소드로 변수를 초기화함으로써 다음 예제에서 설명 된 것처럼 StringBuilder 클래스의 새로운 인스턴스를 만들 수 있습니다.
StringBuilder MyStringBuilder = New StringBuilder ( "Hello World!");
(i) 용량과 길이를 설정합니다
StringBuilder 객체는 캡슐화하는 문자열의 문자 수를 허용하는 동적 객체이지만 보유 할 수있는 최대 문자 수에 대한 값을 지정할 수 있습니다. 이 값을 객체의 용량이라고하며 현재 StringBuilder 객체가 보유하는 문자열 길이와 혼동되어서는 안됩니다. 예를 들어, 문자열 "hello"(길이 5)로 StringBuilder 클래스의 새 인스턴스를 만들 수 있으며, 객체의 최대 용량이 25임을 지정합니다. StringBuilder가 수정되면 용량에 도달 할 때까지 공간을 재 할당하지 않습니다. 용량에 도달하면 새로운 공간이 자동으로 할당되고 용량이 두 배가됩니다. 과부하 된 생성자 중 하나를 사용하여 StringBuilder 클래스의 용량을 지정할 수 있습니다. 다음 코드 예제는 MyStringBuilder 객체를 최대 25 개의 공백으로 확장 할 수 있음을 지정합니다.
StringBuilderMystringBuilder = New StringBuilder ( "Hello World!", 25);
또한 객체의 최대 길이는 읽기/쓰기 용량 속성을 사용하여 설정할 수 있습니다. 다음 코드 예제는 용량 속성을 사용하여 객체의 최대 길이를 정의합니다.
mystringBuilder.capacity = 25;
(ii) 다음은이 유형의 몇 가지 일반적인 방법을 나열합니다.
(1) Append 메소드는 현재 StringBuilder 개체로 표시된 문자열의 끝에 텍스트 또는 개체의 문자열 표현을 추가하는 데 사용될 수 있습니다. 다음 예제는 StringBuilder 객체를 "Hello World"로 초기화 한 다음 객체 끝에 텍스트를 추가합니다. 필요에 따라 공간이 자동으로 할당됩니다.
StringBuilderMystringBuilder = New StringBuilder ( "Hello World!"); MyStringBuilder.Append ( "What Beautiful Day."); Console.Writeline (MyStringBuilder);
이 예제는 Hello World를 표시합니다! 얼마나 아름다운 날. 콘솔로.
(2) AppendFormat 메소드는 StringBuilder의 끝에 텍스트를 추가하고 iformattable 인터페이스를 구현하므로 서식 섹션에 설명 된 표준 형식 문자열을 허용 할 수 있습니다. 이 메소드를 사용하여 변수의 형식을 사용자 정의 하고이 값을 StringBuilder 뒷면에 추가 할 수 있습니다. 다음 예제는 appendformat 메소드를 사용하여 정수 값을 StringBuilder의 끝까지 통화 값 형식으로 설정합니다.
int myint = 25; StringBuilder MyStringBuilder = new StringBuilder ( "your total is"); mystringBuilder.appendFormat ( "{0 : c}", myint); console.writeline (mystringBuilder);이 예제는 당신의 총계가 콘솔에 $ 25.00입니다.
(3) 삽입 메소드는 현재 StringBuilder의 지정된 위치에 문자열 또는 객체를 추가합니다. 다음 예제는이 방법을 사용하여 문자열 빌더의 여섯 번째 위치에 단어를 삽입합니다.
StringBuilderMystringBuilder = New StringBuilder ( "Hello World!"); MyStringBuilder.insert (6, "Beautiful"); Console.writeline (MystringBuilder);
이 예제는 Hello BeautifulWorld를 표시합니다! 콘솔로.
(4) 제거 메소드를 사용하여 현재 StringBuilder에서 지정된 수의 문자를 제거 할 수 있으며 제거 프로세스는 지정된 인덱스에서 0에서 시작합니다. 다음 예제는 제거 메소드를 사용하여 StringBuilder를 단축합니다.
StringBuilderMyStringBuilder = New StringBuilder ( "Hello World!"); MyStringBuilder.remove (5,7); Console.writeline (MystringBuilder);
이 예제는 콘솔에 hello를 표시합니다.
(5) 교체 방법을 사용하여 StringBuilder 객체의 문자를 다른 지정된 문자로 바꿀 수 있습니다. 다음 예제는 교체 메소드를 사용하여 StringBuilder 객체를 검색하고 모든 느낌표 마크 문자 (!)를 찾고 물음표 문자 (?)로 바꿉니다.
StringBuilderMyStringBuilder = New StringBuilder ( "Hello World!"); mystringBuilder.replace ( '!', '?'); console.writeline (mystringBuilder);
이 예제는 Hello World를 표시합니까? 콘솔로
getSqlMapClientTemplate (). QueryForList ((new StringBuilder ()). Append (entityClass.getName ()). Append ( ". select"). toString (), null);
Java의 StringBuilder 클래스
이 프로그램에 추가 문자열이 자주 필요하다면 문자열 연결을 위해 +를 사용하는 것이 좋습니다. java.lang.stringbuilder 클래스를 사용하는 것을 고려할 수 있습니다. 이 클래스를 사용하여 생성 된 객체의 길이는 기본적으로 16 자입니다. 초기 길이를 직접 지정할 수도 있습니다. 첨부 된 문자가 숙박 가능한 길이를 초과하면 StringBuilder 객체는 첨부 된 문자를 수용하기 위해 길이를 자동으로 증가시킵니다. 문자열을 자주 첨부 해야하는 경우 StringBuilder 클래스를 사용하면 효율성이 크게 향상 될 수 있습니다. 다음 코드 :
자바 코드
공개 클래스 AppendStringTest {public static void main (String [] args) {String text = ""; long begintime = System.CurrentTimeMillis (); for (int i = 0; i <10000; i ++) text = text+i; Long Endtime = System.CurrentTimeMillis (); System.out.println ( "실행 시간 :" +(endtime-begintime)); StringBuilder sb = new StringBuilder ( ""); begintime = system.currenttimemillis (); for (int i = 0; i <10000; i ++) sb.append (string.valueof (i)); endtime = System.CurrentTimeMillis (); System.out.println ( "실행 시간 :" +(endtime-begintime)); }} public class appendStringTest {public static void main (String [] args) {String text = ""; long begintime = System.CurrentTimeMillis (); for (int i = 0; i <10000; i ++) text = text+i; Long Endtime = System.CurrentTimeMillis (); System.out.println ( "실행 시간 :"+(endtime-begintime)); StringBuilder sb = new StringBuilder ( ""); begintime = system.currenttimemillis (); for (int i = 0; i <10000; i ++) sb.append (string.valueof (i)); endtime = System.CurrentTimeMillis (); System.out.println ( "실행 시간 :"+(endtime-begintime)); }}이 코드 출력 :
실행 시간 : 3188
실행 시간 : 15
StringBuilder는 J2SE1.5.0에만 추가 된 새로운 클래스입니다. 이전 버전에 동일한 요구 사항이 있으면 java.util.stringbuffer가 사용됩니다. 실제로 StringBuilder는 StringBuffer와 동일한 작동 인터페이스를 갖도록 설계되었습니다. StringBuilder가 동기화 문제를 처리하지 않기 때문에 독립형 이외의 상황에서 StringBuilder를 사용하면 효율성이 향상됩니다. StringBuffer는 동기화 문제를 처리합니다. StringBuilder가 여러 스레드에서 작동하는 경우 StringBuffer를 사용하여 객체가 동기화 문제를 자체적으로 관리하도록해야합니다.
Java에서 StringBuilder 사용에 대한 위의 간단한 분석은 내가 공유하는 모든 콘텐츠입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.