자바 에서 흔히 볼 수 있 는 면접 문제 String,StringBuffer,StringBulider 의 차이 점 및 해당 하 는 사용 방법 소개
문자열 은 상수 입 니 다.그들의 값 은 생 성 된 후에 변경 할 수 없습니다.문자열 버퍼 는 가 변 문자열 을 지원 합 니 다.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();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
복잡 한 생산자 소비자 - pthread기초 지식 사고 정리http://blog.csdn.net/aganlengzi/article/details/51416461 [1] http://www.cnblogs.com/clover-toeic/p/4029269.ht...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.