Java java지도 시간 Java의 StringBuilder 문자열 유형의 연산 방법 및 API 배열

Java의 StringBuilder 문자열 유형의 연산 방법 및 API 배열

Jan 22, 2017 am 09:49 AM

0. StringBuilder 유형 소개
StringBuilder 유형은 StringBuilder 유형의 API와 기본적으로 동일합니다. 즉, StringBuilder는 스레드에 안전하지 않습니다. StringBuilder가 인스턴스화되면 일반적으로 기본적으로 용량 크기를 설정합니다. 이는 일반적으로 문자열 매개변수의 길이 + 16입니다. StringBuilder는 추상 클래스 AbstractStringBuilder를 상속하는데, 이 추상 클래스는 문자 배열을 이용하여 내부적으로 구현되며, 배열을 동적으로 확장할 수 있다. StringBuilder 클래스에서 제공하는 일반적으로 사용되는 메소드에는 추가, 삭제 등의 기본 기능을 구현할 수 있는append(), insert(), replacement(), deleteCharAt(), indexOf(), reverse(), toString() 및 기타 메소드가 있습니다. , 문자열 수정 및 쿼리.

package date0812.demo1;
 
public class Test3 {
 
  public static void main(String[] args) {
    StringBuilder stringBuilder = new StringBuilder("Eclipse");
    //添加
    stringBuilder = stringBuilder.append(" software");
    //容量
    int C = stringBuilder.capacity();
    //翻转
    stringBuilder= stringBuilder.reverse();
    System.out.println(C);
    System.out.println(stringBuilder);
  }
}
로그인 후 복사

실행 결과:

23
erawtfos espilcE
로그인 후 복사

StringBuilder의 메서드
가변적인 문자 시퀀스입니다. AbstractStringBuilder를 상속하고 CharSequence 인터페이스를 구현합니다.
StringBuffer도 AbstractStringBuilder에서 상속된 하위 클래스입니다. 그러나 StringBuilder와 StringBuffer는 서로 다르며 전자는 스레드로부터 안전하지 않고 후자는 스레드로부터 안전합니다.
StringBuilder와 CharSequence의 관계 다이어그램은 다음과 같습니다.

Java의 StringBuilder 문자열 유형의 연산 방법 및 API 배열

StringBuilder 메서드 목록:

StringBuilder()
StringBuilder(int capacity)
StringBuilder(CharSequence seq)
StringBuilder(String str)
 
StringBuilder   append(float f)
StringBuilder   append(double d)
StringBuilder   append(boolean b)
StringBuilder   append(int i)
StringBuilder   append(long l)
StringBuilder   append(char c)
StringBuilder   append(char[] chars)
StringBuilder   append(char[] str, int offset, int len)
StringBuilder   append(String str)
StringBuilder   append(Object obj)
StringBuilder   append(StringBuffer sb)
StringBuilder   append(CharSequence csq)
StringBuilder   append(CharSequence csq, int start, int end)
StringBuilder   appendCodePoint(int codePoint)
int   capacity()
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   ensureCapacity(int min)
void   getChars(int start, int end, char[] dst, int dstStart)
int   indexOf(String subString, int start)
int   indexOf(String string)
StringBuilder   insert(int offset, boolean b)
StringBuilder   insert(int offset, int i)
StringBuilder   insert(int offset, long l)
StringBuilder   insert(int offset, float f)
StringBuilder   insert(int offset, double d)
StringBuilder   insert(int offset, char c)
StringBuilder   insert(int offset, char[] ch)
StringBuilder   insert(int offset, char[] str, int strOffset, int strLen)
StringBuilder   insert(int offset, String str)
StringBuilder   insert(int offset, Object obj)
StringBuilder   insert(int offset, CharSequence s)
StringBuilder   insert(int offset, CharSequence s, int start, int end)
int   lastIndexOf(String string)
int   lastIndexOf(String subString, int start)
int   length()
int   offsetByCodePoints(int index, int codePointOffset)
StringBuilder   replace(int start, int end, String string)
StringBuilder   reverse()
void   setCharAt(int index, char ch)
void   setLength(int length)
CharSequence   subSequence(int start, int end)
String   substring(int start)
String   substring(int start, int end)
String   toString()
void   trimToSize()
로그인 후 복사

AbstractStringBuilder와 StringBuilder의 소스코드가 너무 길어서 여기에는 소스코드를 나열하지 않겠습니다. 관심 있는 독자는 스스로 조사해 볼 수 있습니다.

2. StringBuilder의 API 테스트 코드
2.1 StringBuilder에 insert 관련 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("-------------------------------- testInsertAPIs -------------------------------");
 
    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);
    // 在位置0处插入float
    sbuilder.insert(0, 1.414f);
    // 在位置0处插入double
    sbuilder.insert(0, 3.14159d);
    // 在位置0处插入boolean
    sbuilder.insert(0, true);
    // 在位置0处插入char
    sbuilder.insert(0, '\n');
    // 在位置0处插入int
    sbuilder.insert(0, 100);
    // 在位置0处插入long
    sbuilder.insert(0, 12345L);
    // 在位置0处插入StringBuilder对象
    sbuilder.insert(0, new StringBuilder("StringBuilder"));
    // 在位置0处插入StringBuilder对象。6表示被在位置0处插入对象的起始位置(包括),13是结束位置(不包括)
    sbuilder.insert(0, new StringBuilder("STRINGBUILDER"), 6, 13);
    // 在位置0处插入StringBuffer对象。
    sbuilder.insert(0, new StringBuffer("StringBuffer"));
    // 在位置0处插入StringBuffer对象。6表示被在位置0处插入对象的起始位置(包括),12是结束位置(不包括)
    sbuilder.insert(0, new StringBuffer("STRINGBUFFER"), 6, 12);
    // 在位置0处插入String对象。
    sbuilder.insert(0, "String");
    // 在位置0处插入String对象。1表示被在位置0处插入对象的起始位置(包括),6是结束位置(不包括)
    sbuilder.insert(0, "0123456789", 1, 6);
    sbuilder.insert(0, '\n');
 
    // 在位置0处插入Object对象。此处以HashMap为例
    HashMap map = new HashMap();
    map.put("1", "one");
    map.put("2", "two");
    map.put("3", "three");
    sbuilder.insert(0, map);
 
    System.out.printf("%s\n\n", sbuilder);
  }
}
로그인 후 복사

실행 결과:

-------------------------------- testInsertAPIs -------------------------------
{3=three, 2=two, 1=one}
12345StringBUFFERStringBufferBUILDERStringBuilder12345100
true3.141591.414ABCabcde
로그인 후 복사

2.2 StringBuilder에 관련 API 추가
소스코드는 다음과 같습니다(StringBuilderAppendTest.java) :

/**
 * StringBuilder 的append()示例
 *
 * @author skywang
 */
import java.util.HashMap;
 
public class StringBuilderAppendTest {
 
  public static void main(String[] args) {
    testAppendAPIs() ;
  }
 
  /**
   * StringBuilder 的append()示例
   */
  private static void testAppendAPIs() {
 
    System.out.println("-------------------------------- testAppendAPIs -------------------------------");
 
    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);
    // 追加boolean
    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);
    // 追加String对象。
    sbuilder.append("String");
    // 追加String对象。1表示被追加对象的起始位置(包括),6是结束位置(不包括)
    sbuilder.append("0123456789", 1, 6);
    sbuilder.append('\n');
 
    // 追加Object对象。此处以HashMap为例
    HashMap map = new HashMap();
    map.put("1", "one");
    map.put("2", "two");
    map.put("3", "three");
    sbuilder.append(map);
    sbuilder.append('\n');
 
    // 追加unicode编码
    sbuilder.appendCodePoint(0x5b57);  // 0x5b57是“字”的unicode编码
    sbuilder.appendCodePoint(0x7b26);  // 0x7b26是“符”的unicode编码
    sbuilder.appendCodePoint(0x7f16);  // 0x7f16是“编”的unicode编码
    sbuilder.appendCodePoint(0x7801);  // 0x7801是“码”的unicode编码
 
    System.out.printf("%s\n\n", sbuilder);
  }
}
로그인 후 복사

실행 결과:

-------------------------------- testAppendAPIs -------------------------------
abcdeABC1.4143.14159true
10012345StringBuilderBUILDERStringBufferBUFFERString12345
{3=three, 2=two, 1=one}
字符编码
로그인 후 복사

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 的replace()示例
   */
  private static void testReplaceAPIs() {
 
    System.out.println("-------------------------------- testReplaceAPIs ------------------------------");
 
    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();
  }
}
로그인 후 복사

실행 결과:

-------------------------------- testReplaceAPIs ------------------------------
sbuilder=ABCDE3456789
sbuilder=9876543210
sbuilder=M123456789
로그인 후 복사

2.4 StringBuilder의 삭제 관련 API
소스코드는 다음과 같습니다(StringBuilderDeleteTest.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("-------------------------------- testDeleteAPIs -------------------------------");
 
    StringBuilder sbuilder = new StringBuilder("0123456789");
 
    // 删除位置0的字符,剩余字符是“123456789”。
    sbuilder.deleteCharAt(0);
    // 删除位置3(包括)到位置6(不包括)之间的字符,剩余字符是“123789”。
    sbuilder.delete(3,6);
 
    // 获取sb中从位置1开始的字符串
    String str1 = sbuilder.substring(1);
    // 获取sb中从位置3(包括)到位置5(不包括)之间的字符串
    String str2 = sbuilder.substring(3, 5);
    // 获取sb中从位置3(包括)到位置5(不包括)之间的字符串,获取的对象是CharSequence对象,此处转型为String
    String str3 = (String)sbuilder.subSequence(3, 5);
 
    System.out.printf("sbuilder=%s\nstr1=%s\nstr2=%s\nstr3=%s\n",
        sbuilder, str1, str2, str3);
  }
}
로그인 후 복사

🎜>

2.5 StringBuilder의 index 관련 API

소스 코드는 다음과 같습니다(StringBuilderIndexTest.java):

-------------------------------- testDeleteAPIs -------------------------------
sbuilder=123789
str1=23789
str2=78
str3=78
로그인 후 복사


실행 결과:

/**
 * StringBuilder 中index相关API演示
 *
 * @author skywang
 */
import java.util.HashMap;
 
public class StringBuilderIndexTest {
 
  public static void main(String[] args) {
    testIndexAPIs() ;
  }
 
  /**
   * 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"第一次出现的位置
    System.out.printf("%-30s = %d\n", "sbuilder.indexOf(\"bc\")", sbuilder.indexOf("bc"));
 
    // 2. 从位置5开始,从前往后,找出"bc"第一次出现的位置
    System.out.printf("%-30s = %d\n", "sbuilder.indexOf(\"bc\", 5)", sbuilder.indexOf("bc", 5));
 
    // 3. 从后往前,找出"bc"第一次出现的位置
    System.out.printf("%-30s = %d\n", "sbuilder.lastIndexOf(\"bc\")", sbuilder.lastIndexOf("bc"));
 
    // 4. 从位置4开始,从后往前,找出"bc"第一次出现的位置
    System.out.printf("%-30s = %d\n", "sbuilder.lastIndexOf(\"bc\", 4)", sbuilder.lastIndexOf("bc", 4));
 
    System.out.println();
  }
}
로그인 후 복사

2.6 StringBuilder 나머지 API

소스 코드는 다음과 같습니다(StringBuilderOtherTest.java):

-------------------------------- testIndexAPIs --------------------------------
sbuilder=abcAbcABCabCaBcAbCaBCabc
sbuilder.indexOf("bc")     = 1
sbuilder.indexOf("bc", 5)   = 22
sbuilder.lastIndexOf("bc")   = 22
sbuilder.lastIndexOf("bc", 4) = 4
로그인 후 복사


실행 결과:

/**
 * StringBuilder 的其它API示例
 *
 * @author skywang
 */
import java.util.HashMap;
 
public class StringBuilderOtherTest {
 
  public static void main(String[] args) {
    testOtherAPIs() ;
  }
 
  /**
   * StringBuilder 的其它API示例
   */
  private static void testOtherAPIs() {
 
    System.out.println("-------------------------------- testOtherAPIs --------------------------------");
 
    StringBuilder sbuilder = new StringBuilder("0123456789");
 
    int cap = sbuilder.capacity();
    System.out.printf("cap=%d\n", cap);
 
    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();
  }
}
로그인 후 복사

3. StringBuilder 전체 예제

다음 예제는 위의 예제를 통합한 완전한 StringBuilder 데모 프로그램이며, 소스 코드는 다음과 같습니다(StringBuilderTest.java):

-------------------------------- testOtherAPIs --------------------------------
cap=26
c=6
carr[0]=3 carr[1]=4 carr[2]=5 carr[3]=6
로그인 후 복사

Java 및 API 배열에서 StringBuilder 문자열 유형의 연산 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까? Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까? Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까? 카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까? Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까? 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까? Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까? 고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까? Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까? 적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까? Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

See all articles