Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

StringBuilder 본문

Java

StringBuilder

빌드이너프 2023. 2. 6. 22:12

자바에서 문자열으로 보통 String을 생각함

하지만 문자열이 1개 이상 있어서 이것들을 더해야 할 경우는 어떤 방법을 사용할 수 있을까?

 

일반적인 방법

public class Main {
    public static void main(String[] args) {
        String java = "자바 ";
        String python = "파이썬";

        String result = java + python;
        System.out.println(result);
    }
}

String 객체끼리 더하는 방법은 메모리 할당과 해제를 발생시키고, 덧셈 연산이 많아지면 성능적으로 좋지 않다

 

Object create always takes more time than other operations, so concatenating many Strings like the code snippet above results in many intermediate String objects created, which results in inefficient code.

자바에서 String 객체는 변경불가능함

하나의 문자열을 다른 문자열과 연결하면 새로운 문자열이 되고, 이전 문자열은 GC(Garbage Collection)로 들어감

앞의 코드는 2개의 문자열만 연결했지만 100만개 이상의 문자열이 합쳐져 새로운 문자열이 생성된다고 생각하면 메모리를 많이 사용하게 될 수 있다고 생각할 수 있다

 

이럴 경우 StringBuilder을 사용하면 된다

String은 변경 불가능한 문자열을 생성하지만 StringBuilder은 변경 가능한 문자열을 만들어주기 때문에, String을 합치는 작업 시 하나의 대안이 될 수 있음

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Java ").append("Python");
        System.out.println(sb);

        // String str = sb; // String 에 SringBuilder을 넣을 수 없고 toStirng()을 붙여야함
        String str = sb.toString();
        System.out.println(str);
    }
}

출력

Java Python
Java Python

StringBuilder 객체를 생성한 후, append()의 인자로 연결하고자하는 문자열을 넣djtj StringBuilder 객체를 통해 호출함

String을 통해 출력하고 싶을 경우 toString()을 붙여야 함

 

 

 

 

 

 

 


참고자료

CodeJava Coding Your Passion, Why Use StringBuffer and StringBuilder in Java

참깨빵위에참깨빵, [JAVA] StringBuilder란? StringBuilder 사용법