[JAVA] StringBuilder 클래스

GyeongEun Kim·2021년 6월 29일
0

String클래스는 내부적으로 private final char value[]로 구현이 되어 있기 때문에 한 번 생성된 문자열은 수정할 수 없다.(immutable)

concat()메서드를 사용하여 문자열을 이어붙인다고 해도 해당 문자열이 수정되는 것이 아니라 새로운 문자열이 생성되는 것이다. 그래서 새로운 메모리가 할당되므로 해당 String의 주소 값이 달라진다. 이처럼 String을 이어붙이거나 변경할 때마다 새로운 메모리에 할당이 된다면 메모리가 많이 낭비될 것이다. 따라서 이 문제를 해결하기 위해 StringBuilderStringBuffer 클래스를 사용한다.

StringBuilder와 StringBuffer는 내부에 final이 아닌, 변경 가능한 char[]를 변수로 가지고 있다. 그래서 문자열을 변경하거나 연결해도 추가적인 메모리가 필요하지 않다.

  • StringBuffer : 문자열이 안전하게 변경되도록 보장한다. (스레드 동기화의 안정성)
  • StringBuilder : 보장하지 않는다. 그러나 실행속도가 더 빠르다.

둘 중 StringBuilder 사용법을 코드로 알아보자.

String strTest = "Java";
StringBuilder sb = new StringBuilder(strTest);

buffer.append(" and");
buffer.append(" web");
buffer.append(" programming is fun!");

strTest = buffer.toString();
System.out.println(strTest);

/*출력결과
Java and web programming is fun!
*/
profile
내가 보려고 쓰는 글

0개의 댓글