String 클래스(객체)
-문자열 등의 추가/변경 시 메모리에 기존의 객체를 버리고 새로 생성하여, 객체 재사용 못함
-기존 객체는 GC(garbage )가 메모리에서 회수
StringBuilder/StringBuffer 클래스
-추가/변경 시 메모리에서 기존 객체를 재사용하여 메모리 이용에 효율적
-속도 : StringBuilder가 약간 더 빠름, 데이터 안정성 : StringBuffer가 약간 더 안정
package edu.exam05.stringbuilder06;
//string 보다 stringBuilder 가 속도 성능 좋음
public class MutableStringBuilder {
public static void main(String[] args) {
//StringBuilder - char[] 이 내장되어 있다
StringBuilder sbBuf = new StringBuilder("AB");
sbBuf.append(25); //append : 끝에 삽입
sbBuf.append('Y').append(true);
System.out.println(sbBuf);
sbBuf.insert(2, false); //insert : 중간에 삽입
sbBuf.insert(sbBuf.length(), 'Z');
System.out.println(sbBuf);
}
}
package edu.exam05.stringbuilder08;
//string vs stringBuilder 속도 차이
public class CompareTime {
public static long getStringSpeed() {
long result = 0;
String str = "A";
String target = "B";
long start = System.currentTimeMillis(); //시작시간
for(int i = 0; i<100000;i++)
str += target;
long end = System.currentTimeMillis(); //종료시간
result = end - start;
return result;
}
public static long getStringBuilderSpeed() {
long result = 0;
StringBuilder sb = new StringBuilder("A");
String target = "B";
long start = System.currentTimeMillis();
for(int i =0;i<100000;i++)
sb.append(target);
long end = System.currentTimeMillis();
result = end - start;
return result;
}
public static void main(String[] args) {
long lStrTime = getStringSpeed();
long lSBTime = getStringBuilderSpeed();
System.out.println("String 시간: "+lStrTime);
System.out.println("StrubgBuilder 시간: "+lSBTime);
}
}
StringBuffer 객체 초기화
//StringBuffer 객체 초기화
StringBuffer str = new StringBuffer();
str = null // 1. null 초기화
str.setLength(0); // 2. 길이를 0으로 초기화
'JAVA > 2' 카테고리의 다른 글
[JAVA] 랜덤값 구하기 (0) | 2020.02.09 |
---|---|
[JAVA] 현재 시간 구하기 (0) | 2020.02.08 |
java에서 while(1) while(0) (0) | 2020.01.06 |
length , length(), size() 차이 (0) | 2020.01.06 |
equals() 와 == 의 차이 + compareTo() 정리 (0) | 2020.01.03 |