자바 stringBuilder 의 사용 방법 및 인 스 턴 스 분석
6347 단어 자바stringbuilder실례
String 대상 은 바 꿀 수 없습니다.System.string 클래스 의 방법 을 사용 할 때마다 메모리 에 새로운 문자열 대상 을 만들어 야 합 니 다.새 대상 에 게 새로운 공간 을 할당 해 야 합 니 다.
문자열 에 대한 중복 수정 이 필요 한 경우 새로운 String 대상 을 만 드 는 것 과 관련 된 시스템 비용 이 매우 비 쌀 수 있 습 니 다.
새 대상 을 만 들 지 않 고 문자열 을 수정 하려 면 System.Text.String Builder 류 를 사용 할 수 있 습 니 다.예 를 들 어 하나의 순환 에서 많은 문자열 을 연결 할 때 StringBuilder 클래스 를 사용 하면 성능 을 향상 시 킬 수 있 습 니 다.
다시 불 러 오 는 구조 함수 방법 으로 변 수 를 초기 화하 면 StringBuilder 류 의 새로운 인 스 턴 스 를 만 들 수 있 습 니 다.다음 예제 에서 설명 한 것 처럼.
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
(1)용량 과 길 이 를 설정 합 니 다.StringBuilder 대상 은 동적 대상 이지 만 봉 인 된 문자열 의 문자 수 를 늘 릴 수 있 습 니 다.하지만 수용 할 수 있 는 최대 문자 수 에 값 을 지정 할 수 있 습 니 다.이 값 을 이 대상 의 용량 이 라 고 합 니 다.현재 StringBuilder 대상 이 수용 하 는 문자열 의 길이 와 혼동 해 서 는 안 됩 니 다.예 를 들 어 StringBuilder 클래스 의 문자열'Hello'(길이 5)가 있 는 새로운 인 스 턴 스 를 만 들 수 있 으 며 대상 의 최대 용량 을 25 로 지정 할 수 있 습 니 다.StringBuilder 를 수정 할 때 용량 에 도달 하기 전에 공간 을 재배 치 하지 않 습 니 다.용량 에 도달 하면 자동 으로 새로운 공간 을 분배 하고 용량 이 배로 늘어난다.다시 불 러 오 는 구조 함수 중 하 나 를 사용 하여 StringBuilder 류 의 용량 을 지정 할 수 있 습 니 다.다음 코드 예제 지정 은 MyStringBuilder 대상 을 최대 25 개의 공백 으로 확장 할 수 있 습 니 다.
StringBuilderMyStringBuilder = new StringBuilder("Hello World!", 25);
또한 대상 의 최대 길 이 를 읽 기/쓰기 Capacity 속성 으로 설정 할 수 있 습 니 다.다음 코드 예제 에 서 는 Capacity 속성 을 사용 하여 대상 의 최대 길 이 를 정의 합 니 다.MyStringBuilder.Capacity= 25;
(2)다음 과 같은 몇 가지 일반적인 방법 을 보 여 줍 니 다.
(1)Append 방법 은 현재 StringBuilder 대상 이 표시 하 는 문자열 의 끝 에 텍스트 나 대상 의 문자열 표시 형식 을 추가 하 는 데 사용 할 수 있 습 니 다.다음 예제 에 서 는 StringBuilder 대상 을'Hello World'로 초기 화하 고 일부 텍스트 를 대상 의 끝 에 추가 합 니 다.필요 에 따라 공간 을 자동 으로 분배 합 니 다.
StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
이 예제 에 서 는 Hello World!What abeautiful day.콘 솔 에 표 시 됩 니 다.(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);
이 예제 에 서 는 Your totalk is$25.00 을 콘 솔 에 표시 합 니 다.(3)Insert 방법 은 현재 StringBuilder 의 지정 한 위치 에 문자열 이나 대상 을 추가 합 니 다.다음 예제 에 서 는 이 방법 을 사용 하여 하나의 단 어 를 StringBuilder 의 여섯 번 째 위치 에 삽입 합 니 다.
StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
이 예 는 Hello BeautifulWorld!콘 솔 에 보이 기.(4)delete 방법 을 사용 하여 현재 StringBuilder 에서 지정 한 수량의 문 자 를 제거 할 수 있 습 니 다.제거 과정 은 지정 한 0 에서 시작 하 는 색인 에서 시작 합 니 다.다음 예제 에 서 는 Remove 방법 으로 StringBuilder 를 단축 합 니 다.
StringBuilderMyStringBuilder = new StringBuilder("helloooo");
MyStringBuilder.delete(5,7);
Console.WriteLine(MyStringBuilder);
이 예제 에 서 는 helloo 를 콘 솔 에 표시 합 니 다.(5)Replace 방법 을 사용 하면 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);
자바 의 StringBuilder 클래스프로그램 이 추가 문자열 에 대한 수요 가 빈번 하 다 면+를 사용 하여 문자열 의 직렬 연결 을 권장 하지 않 습 니 다.자바.lang.string Builder 클래스 를 사용 하 는 것 을 고려 할 수 있 습 니 다.이 클래스 를 사용 하면 기본적으로 16 글자 의 길이 가 있 습 니 다.초기 길 이 를 스스로 지정 할 수 있 습 니 다.
추가 문자 가 수용 가능 한 길 이 를 초과 하면 StringBuilder 대상 은 추가 문 자 를 수용 하기 위해 자동 으로 길 이 를 늘 립 니 다.문자열 에 대한 추가 수요 가 잦 으 면 StringBuilder 클래스 를 사용 하면 효율 을 크게 높 일 수 있 습 니 다.다음 코드:
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));
}
}
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<1;i++)
sb.append("\" \"");
endTime = System.currentTimeMillis();
System.out.println(" :"+(endTime-beginTime));
}
}
이 코드 출력:중국"대만"실행 시간:3188
실행 시간:15
StringBuilder 는 j2se 1.5.0 에 추 가 된 클래스 입 니 다.이전 버 전에 서 같은 요구 가 있 으 면 자바 util.stringBuffer 를 사용 합 니 다.
사실 StringBuilder 는 StringBuffer 와 같은 조작 인터페이스 로 설계 되 었 습 니 다.단일 컴퓨터 비 스 레 드(MultiThread)의 경우 StringBuilder 를 사용 하면 동기 화 문 제 를 처리 하지 않 았 기 때문에 효율 적 입 니 다.
StringBuffer 는 동기 화 문 제 를 처리 합 니 다.StringBuilder 가 다 중 스 레 드 에서 작 동 할 경우 StringBuffer 를 사용 하여 대상 이 동기 화 문 제 를 스스로 관리 하도록 해 야 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.