String 불변성
class Main {
public static void main(String[] args) {
System.out.println("별 100개 짜리 문장을 만드는 끔찍한 방법");
String s = "";
for ( int i = 0; i < 100; i++ ) {
s += "*";
}
System.out.println(s); // 이 문장을 만들기 위해 중간에 사용하지도 않을 문장 100개가 만들어집니다.
System.out.println("별 100개 짜리 문장을 만드는 좋은 방법");
StringBuilder sb = new StringBuilder();
for ( int i = 0; i < 100; i++ ) {
sb.append("*");
}
s = sb.toString();
System.out.println(s);
System.out.println("문장은 공공재 입니다. 즉 공유자원이기 때문에, 새로 만들 순 있어도, 기존의 것을 변경하면 안됩니다.");
String s1 = "안녕";
String s2 = "안녕";
String s3 = "안녕";
// 현재 s1, s2, s3는 같은 녀석을 가리킵니다.
// 아래 코드는 s3가 자신이 가리키고 있는 객체를 변경한게 아니라. 새 문장을 만들고 그것을 바라봅니다.(다시 말해 새 객체의 리모콘을 가지게 됩니다.)
s3 += "하세요.";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
Java
복사
String s += * 각 별의 개수를 갖는 객체들이 메모리 100칸에 전부 저장된다. 이후 가비지 컬렉터에 의해 객체가 사라진다.