- 패키지 :
java.lang
- 가변 길이를 가지는 문자열 저장용 클래스
- 문자열의 길이가 늘어나면 StringBuilder 객체의 크기도 자동으로 늘어난다.
- String 클래스의 + 연산(연결 연산)은 많이 사용하면 메모리를 비효율적으로 사용해서 성능이 떨어 지기 때문에 StringBuilder 클래스의 append() 메소드를 이용해서 성능을 높인다.
public class Ex_StringBuilder {
public static void main(String[] args) {
// StringBuilder 객체 생성
StringBuilder sb = new StringBuilder();
}
}
append : + , 더해준다.
StringBuilder sb = new StringBuilder();
sb.append(1);
sb.append(true);
sb.append('T');
sb.append(3.14);
sb.append("hello");
System.out.println(sb); // 1trueT3.14hello
동등 비교
StringBuilder sb = new StringBuilder();
sb.append(1);
sb.append(true);
sb.append('T');
sb.append(3.14);
sb.append("hello");
System.out.println(sb); // 1trueT3.14hello
System.out.println(sb.equals("1trueT3.14hello")); // false
WHY? sb는 String이 아니고, StringBuilder이기 때문에
StringBuilder로 만든 문자열은 반드시 마지막에 String으로 변환해야 한다.
String result = sb.toString();
System.out.println(result.equals("1trueT3.14hello")); // true
StringBuilder 사용하는 이유는 성능 때문이다.
String alphabet1 = "";
long begin1 = System.nanoTime();
for(char ch = 'a'; ch <= 'z'; ch++) {
alphabet1 += ch;
}
long end1 = System.nanoTime();
System.out.println((end1 - begin1) + alphabet1);
// 36900abcdefghijklmnopqrstuvwxyz
StringBuilder sb2 = new StringBuilder();
long begin2 = System.nanoTime();
for(char ch = 'a'; ch <= 'z'; ch++) {
sb2.append(ch);
}
long end2 = System.nanoTime();
String alphabet2 = sb2.toString();
// StringBuilder는 반드시 마지막에 String으로 변환해줘야 한다.
System.out.println((end2 - begin2) + alphabet2);
// 7800abcdefghijklmnopqrstuvwxyz
StringBuilder가 더 빠르다.
대문자 6자리로 구성된 인증코드 작성하기
StringBuilder sbCode = new StringBuilder();
for(int n = 0; n < 6; n++) {
sbCode.append((char)((int)(Math.random() * 26) + 'A'));
}
String code = sbCode.toString();
System.out.println("인증코드 : " + code); // 인증코드 : VEYAAH
1 2 3 4 5 6 7 8 9 10 만들기
StringBuilder sbPaging = new StringBuilder();
for(int n = 1; n <= 10; n++) {
sbPaging.append(n + " ");
}
String paging = sbPaging.toString();
System.out.print(paging); // 1 2 3 4 5 6 7 8 9 10