관련 이론 및 문법 - String 클래스 VS StringBuilder 클래스
String 클래스가 변경할 수 없는 문자열을 나타내는 클래스이고, 이에 반해 StringBuilder 클래스는 변경할 수 있는 문자열을 나타내는 클래스입니다.
String 클래스에서의 문자열 덧붙이는 방법은 + 연산자를 사용하거나, concat 메소드를 사용하면 됩니다. String 클래스는 자신의 char 배열을 변경하면 안 되기 때문에, 새 char 배열을 만들어서, 그 배열에 변경된 값을 저장하고, 새 char 배열을 가지는 임시 String 인스턴스를 생성하여 return 합니다. (기존 char 배열을 변경하지 않고, 유지하기 위해서)
하지만, StringBuilder 클래스에서는 문자열을 덧붙이려면 append 메소드를 호출하면 되는데, 여기서는, 자기 자신의 char 배열을 변경하고, 자기 자신을 return 합니다.
따라서, String 클래스에서 문자열 덧붙여 변경된 내용을 참조하려면 return 값을 참조해야 하고, StringBuilder 클래스는 굳이 return 값 참조할 필요 없이 현재 stringBuilder 인스턴스 자체가 변경되어졌기 때문에 자신을 참조하면 된다는 것입니다.
부분 문자열을 삭제하고 싶을 때는, delete 메소드를 사용합니다. 매개변수로 지울 문자열의 시작 위치와 끝 - 1 위치를 정수 형태로 넘겨서 시작 위치 ~ 끝 - 1 위치에 있는 문자열을 삭제하고, 자기 자신을 return 합니다.
부분 문자열을 새로운 문자열로 치환하고 싶을 때는, replace 메소드를 사용합니다. 매개변수로 치환될 문자열의 시작 위치와 끝 - 1 위치를 정수 형태로 넘기고, 새롭게 바뀔 문자열을 넘겨주면, 해당 위치의 문자열을 새롭게 바뀔 문자열로 바꾸고 자기 자신을 return 합니다.
문자열을 원하는 위치에 삽입하고자 할 때는 insert 메소드를 사용합니다. 매개변수로 삽입할 위치와 문자열을 넘기고, 해당 위치에 문자열을 넣고, 자기 자신을 return 합니다.
원하는 위치의 문자열만 뽑아서 부분 문자열을 만들고 싶다면, substring 메소드를 사용합니다. 매개변수로 시작 위치와 끝 - 1 위치를 넘겨서, 시작 위치 ~ 끝 - 1 위치에 있는 문자열을 추출하여 이를 return 합니다.
StringBuffer 클래스는 StringBuilder 클래스에 멀티 쓰레드 관련한 동기화 개념만 추가된 것입니다.
(String 클래스 참고)
http://docs.oracle.com/javase/8/docs/api/java/lang/String.html
(StringBuilder 클래스 참고)
http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html