String 클래스는 불변객체 입니다.
불변 객체란 객체가 생성된 후 상태가 변하지 않고 계속 유지되는 개체를 말합니다.
String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수 는 없습니다.
StringBuffer 클래스 공식 문서 : https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html
아무 값도 가지고 있지 않은 StringBuffer 객체를 생성 후, 값을 추가
StringBuffer sb = new StringBuffer();
sb.append("hello");
sb.append(" ");
sb.append("world");
// StringBuffer에 추가된 값을 toString() 메서드를 이용하여 String 으로 반환
String str = sb.toString();
System.out.println(str);
StringBuffer가 가지고 있는 메서드들은 대부분 자기 자신, this을 반환하는 메서드 입니다.
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello");
if(sb2 == sb3) {
System.out.pringln("sb2 == sb3");
}
// 출력 결과 : sb == sb3
StringBuffer 클래스는 메서드 체이닝으로 사용할 수 있도록 만들어져 있다.
메서드 체이닝 : 자기 자신의 메서드를 호출하여 자기 자신의 값을 바꿔나가는 것
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
System.out.println(str2);
StrigBuffer는 append 메서드 외에도 길이를 구하거나, 자르거나 등의 다양한 메서드들을 가지고 있습니다.