백엔드/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를 사용한다.