개발 무지렁이

[Java] String과 StringBuilder 본문

Backend/자바

[Java] String과 StringBuilder

Gaejirang-e 2023. 3. 12. 14:40

값변경에 잘쓰이지 않는 String


public class StringTest {
    public static void main(String[] args) {
        String str = "안녕하세요";
        System.out.println(str); // 안녕하세요

        str = "Hello";
        System.out.println(str); // Hello
    }
}

❓ 수정이 잘되는데 왜 String은 값변경에 쓰이지 않을까?
: String은 객체이다, 원래는
String str = new String("안녕하세요");
의 축약형이 위 코드이다.
이 코드가 실행되면 String 객체가 만들어지고, str="Hello";로 바꿨을 때
이 객체에 있는 값이 바뀌는 것이 아니라,
새로운 객체가 만들어지고 str변수가 참조하는 주소가 바뀌는 것일 뿐이다
결론, 값을 수정할때마다 객체가 만들어지고, 메모리는 낭비된다
(어차피 참조되지 않는 객체는 GC(Garbage Collector)가 처리하긴 하지만..)

문자열을 누적하는 StringBuilder


📌 StringBuilder는 java.lang 패키지에 속해있기 때문에 import를 따로 안해줘도 된다.

public class StringBuilderTest {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("안녕하세요");    
        System.out.println(sb.toString()); // 안녕하세요

        sb.delete(0, sb.length());
        sb.append("Hello");
        System.out.println(sb.toString()); // Hello
    }
}
Comments