자바 에서 흔히 볼 수 있 는 면접 문제 String,StringBuffer,StringBulider 의 차이 점 및 해당 하 는 사용 방법 소개

String 클래스 의 대표 문자열 입 니 다.자바 프로그램의 모든 문자열 글자 액면가(예 를 들 어 abc)는 이러한 인 스 턴 스 로 이 루어 집 니 다.
문자열 은 상수 입 니 다.그들의 값 은 생 성 된 후에 변경 할 수 없습니다.문자열 버퍼 는 가 변 문자열 을 지원 합 니 다.String 대상 은 가 변 적 이지 않 기 때문에 공유 할 수 있 습 니 다.예 를 들 면:
String str = "abc";
다음 과 같다:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
StringBuffer 스 레 드 의 안전 한 가 변 문자 시퀀스 입 니 다.String 과 유사 한 문자열 버퍼 입 니 다.변경 할 수 없습니다.StringBuffer 의 주요 동작 은 append 와 insert 방법 입 니 다.이 방법 들 을 다시 불 러 와 서 임의의 형식의 데 이 터 를 받 아들 일 수 있 습 니 다.모든 방법 은 주어진 데 이 터 를 문자열 로 효과적으로 변환 한 다음 이 문자열 의 문 자 를 문자열 버퍼 에 추가 하거나 삽입 할 수 있 습 니 다.append 방법 은 항상 이 문 자 를 버퍼 의 끝 에 추가 합 니 다.insert 방법 은 지정 한 점 에 문 자 를 추가 합 니 다.
StringBuilder 가 변 적 인 문자 시퀀스 입 니 다.StringBuffer 와 호 환 되 는 API 를 제공 하지만 동기 화 는 보장 되 지 않 습 니 다.이 종 류 는 StringBuffer 의 간단 한 교체 로 설계 되 었 습 니 다.문자열 버퍼 가 하나의 스 레 드 에 사 용 될 때 사용 합 니 다.가능 하 다 면 이 종 류 를 우선 사용 하 는 것 을 권장 합 니 다.대부분의 실현 에서 StringBuffer 보다 빠 르 기 때 문 입 니 다.
  다음은 개인 이 쓴 테스트 코드 로 그 에 대한 이해 와 기억 을 강화 할 수 있 습 니 다!
   한 마디 로 요약:String 성명 초기 화 내용 은 대상 이 공유 메모리 에 배 치 된 것 입 니 다.StringBuffer 는 String 보다 안전 한 속도 입 니 다.StringBulider 스 레 드 는 안전 하지 않 지만 가장 빠 릅 니 다.대부분 사용 할 수 있 습 니 다!
package practice;

import java.util.Date;

public class Test1 {
	private static final String base = "  ";
	private static final int count = 1000000;

	public static void stringTest() {
		long begin, end;
		begin = System.currentTimeMillis();
		String test = new String(base);
		for (int i = 0; i < count / 100; i++) {
			test = test + "add";
		}
		end = System.currentTimeMillis();
		System.out.println((end - begin) + "millis(  String     )");
	}

	public static void stringBufferTest() {
		long begin, end;
		begin = System.currentTimeMillis();
		StringBuffer test = new StringBuffer(base);

		for (int i = 0; i < count; i++) {
			test = test.append("add");
		}
		end = System.currentTimeMillis();
		System.out.println((end - begin) + "millis(  Stringbuffer     )");
	}

	public static void stringBuliderTest() {
		long begin, end;
		begin = System.currentTimeMillis();
		StringBuilder test = new StringBuilder("base");
		for (int i = 0; i < count; i++) {
			test = test.append("add");
		}
		end = System.currentTimeMillis();
		System.out.println((end - begin) + "millis(  StringBulider     )");
	}

	public static void main(String[] args) {
		stringTest();
		System.out.println();
		stringBufferTest();
		System.out.println();
		stringBuliderTest();

	}
}

좋은 웹페이지 즐겨찾기