Java에서 String 클래스는 불변성을 가져 변하지 않는 문자열을 자주 사용하는 경우에 좋은 성능을 기대할 수 있다
🖐️하지만 문자열의 변경이 자주 일어나면 효율적인 성능을 기대하기 어렵다
String을 만드는 객체
Java에서 문자열 데이터 변경을 위해 StringBuilder로 변경한 다음 append나 insert등의 기능을 처리할 수 있음
StringBuilder SB = new StringBuilder();
SB.append("ABC"); // 문자열을 더할 때
System.out.println(SB.toString()); // 만들어진 문자열을 출력할 때 StringBuilder의 인스턴스인 toString()사용
String으로 문자열을 만들게 되면 변하지 않는 String 객체가 생성이 됨
String text = "abc"; 로 문자열을 더하거나 변경을 할 때
기본 String으로 만든 문자열은 변하지 않기 때문에 새로운 객체를 생성해 해당 문자열을 수정하므로 메모리가 낭비됨
연산이 많아지면 많아질수록 메모리의 낭비가 커지게됨!
→ 이러한 문제 해결을 위해 StringBuilder를 사용
StringBuilder는 변경 가능한 문자열을 만들기 때문에 String 보다 메모리가 낭비가 되지 않음
여러줄을 출력한다는 가정하에
println으로 출력하기 vs BufferedWriter에 저장해서 출력하기 vs StringBuilder 로 출력하기
String a = "고병갑";
System.out.println(a);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a = "고병갑";
bw.write(a); // write() 출력할 내용을 담음 엔터가 자동이 아니므로 줄을 띄울땐 "\n"을 넣어줘야함
bw.flush(); // flush() write로 담은 내용을 출력 후 버퍼를 비움
bw.close();
StringBuilder sb = new StringBuilder();
sb.append("고병갑")
System.out.print(sb);