JAVA_StringBuilder 클래스

JW__1.7·2022년 7월 25일
0

JAVA 공부일지

목록 보기
10/30

StringBuilder 클래스

  • 패키지 : 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과 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 

0개의 댓글