백엔드/Java

StringBuffer 와 StringBuilder 의 차이

david100gom 2024. 3. 20. 11:53

StringBuilder와 StringBuffer는 메소드명까지 같다.그렇다면 두개의 차이점은 무엇일까?

StringBuffer는 스레드에 안전하게 설계되어 있다.  즉 여러 스레드가 하나의 StringBuffer의 객체를 작업할 수 있다. 그리고 StringBuilder는 스레드에 안전하지 않으므로 단일 스레드로 작업해야한다.

  

정리하자면

1. String 클래스의 +연산은 짧은 문자열을 더할 때에만 사용한다.

2. StringBuffer 클래스는 스레드 작업을 하거나, static 문자열을 변경하거나,  singleton 클래스에 선언된 문자열에서 작업할 때 사용한다.

3. StringBuilder 클래스는 단일 스레드로 작업할 때나, 메소드의 지역변수를 상대로 작업한다.

4. JDK 5.0 이상부터는 String의 +연산을 컴파일러가 자동으로 StringBuilder 연산으로 바꿔주지만,  반복문 안에서의 +연산은 여전히 일반 +연산으로 수행하므로 가급적 StringBuffer나 StringBuilder를  사용한다.