0. StringBuilder 유형 소개
StringBuilder 유형은 변이 가능한 문자열 유형입니다. StringBuilder 유형의 API는 기본적으로 StringBuffer 유형의 API와 동일합니다. 유일한 차이점은 StringBuilder를 사용하면 단일 스레드에 있다고 가정합니다. 다시 말해, StringBuilder는 스레드 infecure입니다. StringBuilder를 인스턴스화 할 때 일반적으로 기본적으로 용량 크기를 설정합니다. 일반적으로 문자열 매개 변수의 길이 +16. StringBuilder는 Abstract Class AbstractStringBuilder를 상속하고, Abstract 클래스는 문자 배열을 사용하여 내부적으로 구현되며 배열은 동적으로 확장 될 수 있습니다. StringBuilder 클래스에서 제공하는 일반적인 메소드에는 부록 (), insert (), replace (), deletecharat (), indexof (), reverse (), toString () 및 기타 메소드가 포함되며,이 방법은 문자열 추가, 삭제, 수정 및 검색과 같은 기본 함수를 실현할 수 있습니다.
패키지 날짜 0812.demo1; public class test3 {public static void main (String [] args) {StringBuilder StringBuilder = new StringBuilder ( "eclipse"); // stringBuilder = StringBuilder.Append ( "Software"); // 용량 int c = StringBuilder.capacity (); // flip StringBuilder = StringBuilder.Reverse (); System.out.println (C); System.out.println (StringBuilder); }} 실행 결과 :
23erawtfos espilce
1. StringBuilder 방법
StringBuilder는 가변 문자 순서입니다. AbstractStringBuilder에서 물려 받고 charEdegence 인터페이스를 구현합니다.
StringBuffer는 또한 AbstractStringBuilder에서 상속 된 서브 클래스입니다. 그러나 StringBuilder와 StringBuffer는 다릅니다. 전자는 스레드가 아닌 반면, 후자는 스레드 안전입니다.
StringBuilder와 charSequence 간의 관계 다이어그램은 다음과 같습니다.
StringBuilder 메소드 목록 :
StringBuilder () StringBuilder (int 용량) StringBuilder (charSequence seq) StringBuilder (String STR) StringBuilder Append (Double D) StringBuilder Append (Boolean B) StringBuilder Append (int I) StringBuilder Append (Long Builder Append (Char Chbuilder Bactend) chars) StringBuilder Append (char [] str, int offset, int len) StringBuilder Append (Stringbuilder Append (StringBuilder Append) StringBuilder Append (StringBuffer SB) StringBuilder Append (charEverence CSQ) StringBuilder Append (CharcectenceBuilder Append, int int) 용량 () char charat (int index) int codepointat (int index) int codepointbefore (int index) int codepointCount (int start, int end) stringBuilder delete (int start, int end) stringBuilder deletecharat (int index) void inersecapacity (int min) void getchars (int start, int ind) indexof (문자열 문자열) StringBuilder Insert (int 오프셋, 부울 b) StringBuilder Insert (int 오프셋, int i) StringBuilder Insert (int 오프셋, Long L) StringBuilder Insert (int offset, float f) StringBuilder Insert (int 오프셋, Double D) StringBuilder Insert (int verfer insert, Char C) StringBuilder insert (intset, cha. CH) StringBuilder Insert (int 오프셋, char [] str, int stroffset, int strlen) StringBuilder Insert (int 오프셋, String) StringBuilder insert (int 오프셋, Object Obj) StringBuilder Insert (int offset, chareverence s) stringbuilder (int reftset, charever start, int int). 서브 스트링, int start) int longth () int offsetbycodepoints (int index, int codepointoffset) stringBuilder 교체 (int start, int end, string) stringBuilder Reverse () void setcharat (int index, char ch) void setlength (int length) char earthecence (int start, int end) 문자열 (int) 문자열 (int) string (int) strattring (int int) trimtosize ()
AbstractStringBuilder 및 StringBuilder의 소스 코드가 너무 길기 때문에 소스 코드는 여기에 나열되지 않습니다. 관심있는 독자는 스스로 공부할 수 있습니다.
2. StringBuilder API 테스트 코드
2.1 StringBuilder에 관련 API 삽입 (삽입)
소스 코드는 다음과 같습니다 (StringBuilderInsertTest.java) :
/** * StringBuilder 的 insert () 示例 * * @author skywang */import java.util.hashmap; public class stringbuilderinserttest {public static void main (string [] args) {testinsertapis (); } / *** StringBuilder 的 insert () 示例* / private static void testinsertapis () {system.out.println ( "-----------------------------------------------------------------------------------------------------------------------------------------------------AOIOOOOOOUIOOOOUREEERTIER () {SYS함 StringBuilder sbuilder = new StringBuilder (); // 위치에 문자 배열을 삽입 0 sbuilder.insert (0, new char [] { 'a', 'b', 'c', 'd', 'e'}); // 위치 0. 0에 문자 배열을 삽입하여 문자 배열의 시작 위치를 나타냅니다. 3은 길이 sbuilder.insert (0, new char [] { 'a', 'b', 'c', 'd', 'e'}, 0, 3)을 나타냅니다. // float sbuilder.insert (0, 1.414f); // double sbuilder.insert (0, 3.14159d) 삽입; // 부울 sbuilder.insert (0, true) 삽입; // char sbuilder.insert (0, '/n') 삽입; // int sbuilder.insert (0, 100) 삽입; // long sbuilder.insert (0, 14159d) 삽입; // 부울 sbuilder.insert (0, true) 삽입; // char sbuilder.insert (0, '/n') 삽입; // int sbuilder.insert (0, 100) 삽입; // long sbuilder.insert (0, 12345L) 삽입; // StringBuilder 객체 sbuilder.insert (0, new StringBuilder ( "StringBuilder") 삽입; // 위치 0. 6에 StringBuilder 객체를 삽입하여 위치 0, 13에 삽입 된 객체의 시작 위치 (포함)는 끝 위치 (제외) sbuilder.insert (0, new StringBuilder ( "StringBuilder"), 6, 13); // 위치 0. sbuilder.insert (0, new StringBuffer ( "StringBuffer"))에 StringBuffer 개체를 삽입; // 위치 0. 6에 StringBuffer 객체를 삽입하십시오. 위치 0, 12에 삽입 된 객체의 시작 위치 (포함)는 끝 위치 (제외) sbuilder.insert (0, new StringBuffer ( "StringBuffer"), 6, 12); // 위치 0에서 문자열 객체를 삽입합니다. sbuilder.insert (0, "String"); // 위치 0에서 문자열 객체를 삽입합니다. 1은 위치 0, 6에 삽입 된 객체의 시작 위치 (포함)를 나타냅니다. sbuilder.insert (0, '/n'); // 위치 0에 객체 객체를 삽입합니다. 여기서 우리는 hashmap을 예제로 가져옵니다 hashmap map = new Hashmap (); map.put ( "1", "one"); map.put ( "2", "two"); map.put ( "3", "Three"); sbuilder.insert (0, 맵); System.out.printf ( "%s/n/n", sbuilder); }} 실행 결과 :
-------------------------------- testInsertAPIs -------------------------------{3=three, 2=two, 1=one}12345StringBUFFERStringBufferBUILDERStringBuilder12345100true3.141591.414ABCabcde 2.2 StringBuilder의 Append (Append) 관련 API
소스 코드는 다음과 같습니다 (StringBuilderAppendTest.java) :
/** * StringBuilder 的 actend () 示例 * * @author skywang */import java.util.hashmap; public class StringBuilderAppendTest {public static void main (string [] args) {testappendapis (); } / *** StringBuilder 的 actend () 示例* / private static void testappendapis () {System.out.println ( "--------------------------------------------------------------------------------------------------------------------------------AOIOOOOOOUIOOOUIOODHEP함 ("--------------------------- StringBuilder sbuilder = new StringBuilder (); // 문자 배열 SBUILDER.Append (new char [] { 'a', 'b', 'c', 'd', 'e'}); // 문자 배열을 추가하십시오. 0은 문자 배열의 시작 위치를 나타냅니다. 3은 길이 sbuilder.append (new char [] { 'a', 'b', 'c', 'd', 'e'}, 0, 3)을 나타냅니다. // float sbuilder.append (1.414f); // double sbuilder.append (3.14159d); // 부울 sbuilder.append (true); // char sbuilder.append ( '/n'); // int sbuilder.Append (100); // Long Sbuilder.Append (12345L); // StringBuilder 개체 sbuilder.append (new StringBuilder ( "StringBuilder")); // StringBuilder 객체를 추가하십시오. 도 6은 추가 된 객체의 시작 위치 (포함)를 나타냅니다. 13은 종료 위치 (제외) sbuilder.append (new StringBuilder ( "StringBuilder"), 6, 13); // StringBuffer 객체를 추가하십시오. sbuilder.append (new StringBuffer ( "StringBuffer")); // StringBuffer 객체를 추가하십시오. 도 6은 추가 된 객체의 시작 위치 (포함)를 나타냅니다. 12는 끝 위치 (제외) sbuilder.append (new StringBuffer ( "StringBuffer"), 6, 12); // 문자열 객체를 추가하십시오. sbuilder.append ( "String"); // 문자열 객체를 추가하십시오. 도 1은 추가 된 객체의 시작 위치 (포함)를 나타내며, 6은 끝 위치 (제외) sbuilder.append ( "0123456789", 1, 6); sbuilder.append ( '/n'); // 객체 객체를 추가하십시오. 여기서 우리는 해시 맵을 예제로 hashmap map = new hashmap ()로 가져갑니다. map.put ( "1", "one"); map.put ( "2", "two"); map.put ( "3", "Three"); sbuilder.append (지도); sbuilder.append ( '/n'); // 유니 코드 인코딩 sbuilder.appendCodePoint (0x5B57); // 0x5b57은 sbuilder.appendcodepoint (0x7b26)를 인코딩하는 유니 코드입니다. // 0x7b26은 sbuilder.appendcodepoint (0x7f16)를 인코딩하는 유니 코드입니다. // 0x7f16은 "인코딩 된"유니 코드 인코딩 sbuilder.appendcodepoint (0x7801)입니다. // 0x7801은 "인코딩 된"유니 코드 인코딩 시스템입니다. out.printf ( "%s/n/n", sbuilder); }} 실행 결과 :
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.3 StringBuilder의 관련 API를 교체하십시오
소스 코드는 다음과 같습니다 (StringBuilderReplacetest.java) :
/** * StringBuilder 的 replace () 示例 * * @author skywang */import java.util.hashmap; public class stringbuilderReplacetest {public static void main (string [] args) {testReplaceApis (); } / *** StringBuilder 的 relffice () 示例* / private static void testreplaceapis () {System.out.println ( "----------------------------------------------------------------------------------------------------------------------------------------------------OOIOOOOOOIOOIOOIOIOS 주! 때문에함보대대대해 보작밀 로보로 ("----------------------------------------- StringBuilder Sbuilder; sbuilder = new StringBuilder ( "0123456789"); sbuilder.replace (0, 3, "abcde"); System.out.printf ( "sbuilder =%s/n", sbuilder); sbuilder = new StringBuilder ( "0123456789"); sbuilder.reverse (); System.out.printf ( "sbuilder =%s/n", sbuilder); sbuilder = new StringBuilder ( "0123456789"); sbuilder.setcharat (0, 'm'); System.out.printf ( "sbuilder =%s/n", sbuilder); System.out.println (); }} 실행 결과 :
------------------------------------------------------------------------------------ abcde3456789Sbuilder = 9876543210SBuilder = M123456789
2.4 StringBuilder의 삭제 (삭제) 관련 API
소스 코드는 다음과 같습니다 (StringBuilderDeletest.java) :
/** * StringBuilder 的 delete () 示例 * * @author skywang */import java.util.hashmap; public class stringbuilderdeletetest {public static void main (string [] args) {testdeleteApis (); } / *** StringBuilder 的 delete () 示例* / private static void testdeleteapis () {System.out.println ( "-------------------------------------------------------------------------------------------------------------------------------------------------------AOIOOOOOOUIOIOIOUSHEP함신함색부하 ("-------------------------- StringBuilder sbuilder = new StringBuilder ( "0123456789"); // 위치 0에서 문자를 삭제하면 나머지 문자는 "123456789"입니다. sbuilder.deletecharat (0); // 위치 3 (포함)과 위치 6 (제외) 사이에 문자를 삭제하고 나머지 문자는 "123789"입니다. sbuilder.delete (3,6); // sb str1 = sbuilder.substring (1)에서 위치 1에서 시작하는 문자열을 가져옵니다. // sb str2 = sbuilder.substring (3, 5)에서 위치 3 (포함)에서 위치 5 (제외)까지 문자열을 가져옵니다. // sb str3 = (문자열) sbuilder.subsequence (3, 5)에서 위치 3 (포함)에서 위치 5 (제외)로 문자열을 가져옵니다. System.out.printf ( "sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); }} 실행 결과 :
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.5 StringBuilder의 인덱스 관련 API
소스 코드는 다음과 같습니다 (StringBuilderIndextest.java) :
/** * StringBuilder의 색인 관련 API 데모 * * @Author Skywang */import java.util.hashmap; public class stringbuilderIndextest {public static void main (String [] args) {testIndexapis (); } / *** StringBuilder* / private static void testIndexapis () {Index 관련 API 데모 System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder sbuilder = 새로운 StringBuilder ( "abcabcabcabcabcabc"); "sbuilder =%s/n", sbuilder); sbuilder.indexof ( "BC"); 5에서 5에서 "BC"가 처음으로 System.out.out.printf ( " %-30s = %d/n", "bc/", 5)를 찾습니다. "bc"는 처음으로 System.out.printf ( " %-30s = %d/n", "sbuilder.lastindexof (/"bc/")", sbuilder.lastindexof ( "bc")에 대해 나타납니다. // 4. 뒤로 앞서서, 처음으로 "bc"가 처음으로 System.out.out.printf ( " %-30s = %d/n", "sbuilder.lastindexof (/"bc/", 4)", sbuilder.lastindexof ( "bc", 4))를 찾으십시오. System.out.println (); }} 실행 결과 :
-------------------------------- testIndexAPIs --------------------------------sbuilder=abcAbcABCabCaBcAbCaBCabcsbuilder.indexOf("bc") = 1sbuilder.indexOf("bc", 5) = 22sbuilder.lastIndexOf("bc") = 22Sbuilder.lastindexof ( "BC", 4) = 4 2.6 StringBuilder 남은 API
소스 코드는 다음과 같습니다 (StringBuilderothertest.java) :
/** * StringBuilder의 다른 API 예 * * @Author Skywang */import java.util.hashmap; public class StringBuilderothertest {public static void main (String [] args) {testotherapis (); } / *** StringBuilder* / private static void testotherapis () {다른 API 예제. System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ new StringBuilder (0123456789); (int); 실행 결과 :
------------------------------------------------------------------------- 캡 = 26C = 6Carr [0] = 3 Carr [1] = 4 Carr [2] = 5 Carr [3] = 6
3. StringBuilder 완전한 예
다음 예는 위의 예를 통합하는 완전한 StringBuilder 데모 프로그램입니다. 소스 코드는 다음과 같습니다 (StringBuilderTest.java) :
/** * StringBuilder Demo 프로그램 * * @Author Skywang */import java.util.hashmap; public class StringBuilderTest {public static void main (String [] args) {testotherapis (); testIndexApis (); testinsertapis (); testAppendapis (); TestReplaceApis (); testDeleteApis (); } /** * Other API examples of StringBuilder*/ private static void testOtherAPIs() { System.out.println("-------------------------------- testOtherAPIs --------------------------------"); StringBuilder sbuilder = new StringBuilder ( "0123456789"); int cap = sbuilder.capacity (); System.out.printf ( "cap =%d/n", 캡); char c = sbuilder.charat (6); System.out.printf ( "C =%C/N", C); char [] carr = new char [4]; sbuilder.getchars (3, 7, Carr, 0); for (int i = 0; i <carr.length; i ++) system.out.printf ( "carr [%d] =%c", i, carr [i]); System.out.println (); System.out.println (); } /** * StringBuilder 中index相关API演示*/ private static void testIndexAPIs() { System.out.println("-------------------------------- testIndexAPIs --------------------------------"); StringBuilder sbuilder = new StringBuilder ( "abcabcabcabcabcabcabcabc"); System.out.printf ( "sbuilder =%s/n", sbuilder); // 1. 앞쪽에서 앞뒤로 "BC"가 처음으로 "BC"가 나타나는 위치를 찾으십시오 .out.out.printf ( " %-30s = %d/n", "sbuilder.indexof (/"bc/")", sbuilder.indexof ( "bc")); // 2. 위치 5에서 앞쪽에서 뒤로, 처음으로 "bc"가 나타나는 위치를 찾으십시오. out.printf ( " %-30s = %d/n", "sbuilder.indexof (/"bc/", 5)", sbuilder.indexof ( "BC", 5)); // 3. 뒤로 앞서서, 처음으로 "bc"가 처음으로 System.out.out.printf ( " %-30s = %d/n", "sbuilder.lastindexof (/"bc/")", sbuilder.lastindexof ( "bc")를 찾으십시오. // 4. 뒤로 앞서서, 처음으로 "bc"가 처음으로 System.out.out.printf ( " %-30s = %d/n", "sbuilder.lastindexof (/"bc/", 4)", sbuilder.lastindexof ( "bc", 4))를 찾으십시오. System.out.println (); } / *** StringBuilder 的 relffice () 示例* / private static void testreplaceapis () {System.out.println ( "----------------------------------------------------------------------------------------------------------------------------------------------------OOIOOOOOOIOOIOOIOIOS 주! 때문에함보대대대해 보작밀 로보로 ("----------------------------------------- StringBuilder Sbuilder; sbuilder = new StringBuilder ( "0123456789"); sbuilder.replace (0, 3, "abcde"); System.out.printf ( "sbuilder =%s/n", sbuilder); sbuilder = new StringBuilder ( "0123456789"); sbuilder.reverse (); System.out.printf ( "sbuilder =%s/n", sbuilder); sbuilder = new StringBuilder ( "0123456789"); sbuilder.setcharat (0, 'm'); System.out.printf ( "sbuilder =%s/n", sbuilder); System.out.println (); } / *** StringBuilder delete () 예제* / private static void testDeleteApis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sbuilder.deletecharat (0). str2 = sbuilder.substring (3, 5); // sb str3 = (String) sbuilder.subsequence (3, 5)에서 위치 3 (포함)에서 위치를 가져옵니다. System.out.printf ( "sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); } / *** StringBuilder insert () 예제* / private static void testinsertapis () { System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0은 문자 배열의 시작 위치를 나타냅니다. 3은 sbuilder.insert를 나타냅니다 sbuilder.insert (0, true); // char sbuilder.insert (0, '/n') 삽입; // int sbuilder.insert (0, 100) 삽입; // long sbuilder.insert (0, 12345L) 삽입; // StringBuilder 객체 sbuilder.insert (0, new StringBuilder ( "StringBuilder") 삽입; // 위치 0. 6에 StringBuilder 객체를 삽입하여 위치 0, 13에 삽입 된 객체의 시작 위치 (포함)는 끝 위치 (제외) sbuilder.insert (0, new StringBuilder ( "StringBuilder"), 6, 13); // 위치 0. sbuilder.insert (0, new StringBuffer ( "StringBuffer"))에 StringBuffer 개체를 삽입; // 위치 0. 6에 StringBuffer 객체를 삽입하십시오. 위치 0, 12에 삽입 된 객체의 시작 위치 (포함)는 끝 위치 (제외) sbuilder.insert (0, new StringBuffer ( "StringBuffer"), 6, 12); // 위치 0에서 문자열 객체를 삽입합니다. sbuilder.insert (0, "String"); // 위치 0에서 문자열 객체를 삽입합니다. 1은 위치 0, 6에 삽입 된 객체의 시작 위치 (포함)를 나타냅니다. sbuilder.insert (0, '/n'); // 객체 객체를 위치 0에 삽입합니다. map.put ( "1", "one"); map.put ( "2", "two"); map.put ( "3", "Three"); sbuilder.insert (0, 맵); System.out.printf ( "%s/n/n", sbuilder); } / *** StringBuilder 的 actend () 示例* / private static void testappendapis () {System.out.println ( "---------------------------------------------------------------------------------------------------------------------------------------------------------AOIOOOOOOUIOOOY 주 보작밀t StringBuilder sbuilder = new StringBuilder (); // 문자 배열 SBUILDER.Append (new char [] { 'a', 'b', 'c', 'd', 'e'}); // 문자 배열을 추가하십시오. 0은 문자 배열의 시작 위치를 나타냅니다. 3은 길이 sbuilder.append (new char [] { 'a', 'b', 'c', 'd', 'e'}, 0, 3)을 나타냅니다. // float sbuilder.append (1.414f); // double sbuilder.append (3.14159d); // 부울 sbuilder.append (true); // char sbuilder.append ( '/n'); // int sbuilder.Append (100); // Long Sbuilder.Append (12345L); // StringBuilder 개체 sbuilder.append (new StringBuilder ( "StringBuilder")); // StringBuilder 객체를 추가하십시오. 도 6은 추가 된 객체의 시작 위치 (포함)를 나타냅니다. 13은 종료 위치 (제외) sbuilder.append (new StringBuilder ( "StringBuilder"), 6, 13); // StringBuffer 객체를 추가하십시오. sbuilder.append (new StringBuffer ( "StringBuffer")); // StringBuffer 객체를 추가하십시오. 도 6은 추가 된 객체의 시작 위치 (포함)를 나타냅니다. 12는 끝 위치 (제외) sbuilder.append (new StringBuffer ( "StringBuffer"), 6, 12); // 문자열 객체를 추가하십시오. sbuilder.append ( "String"); // 문자열 객체를 추가하십시오. 도 1은 추가 된 객체의 시작 위치 (포함)를 나타내며, 6은 끝 위치 (제외) sbuilder.append ( "0123456789", 1, 6); sbuilder.append ( '/n'); // 객체 객체를 추가하십시오. 여기서 우리는 해시 맵을 예제로 hashmap map = new hashmap ()로 가져갑니다. map.put ( "1", "one"); map.put ( "2", "two"); map.put ( "3", "Three"); sbuilder.append (지도); sbuilder.append ( '/n'); // 유니 코드 인코딩 sbuilder.appendCodePoint (0x5B57); // 0x5b57은 sbuilder.appendcodepoint (0x7b26)를 인코딩하는 유니 코드입니다. // 0x7b26은 sbuilder.appendcodepoint (0x7f16)를 인코딩하는 유니 코드입니다. // 0x7f16은 "인코딩 된"유니 코드 인코딩 sbuilder.appendcodepoint (0x7801)입니다. // 0x7801은 "인코딩 된"유니 코드 인코딩 시스템입니다. out.printf ( "%s/n/n", sbuilder); }}