String과 StringBuilder는 프로젝트에서 자주 사용되는데, String은 "+"로 이어붙일 수 있고, StringBuilder는 Append로 이어붙일 수 있는데, String을 사용할 수 있는데 왜 StringBuilder를 사용해야 하는지 이해가 되지 않았습니다. 데이터베이스 쿼리를 수행할 때 쿼리문을 연결하기 위해 습관적으로 StringBuilder를 사용하지만 여전히 이유를 모르겠습니다. 오늘 영상을 보다가 StringBuffer를 다시 보니 사용법이 비슷하다는 느낌이 들어서 이것저것 차이점을 확인해 봤습니다.
다음과 같이 요약됩니다.
1. 실행 속도 비교: StringBuilder > StringBuffer
2. StringBuffer와 StringBuilder는 문자열 변수이며 변경 가능한 객체입니다. 문자열을 조작하기 위해 사용할 때마다 실제로는 객체를 생성하여 문자열처럼 작동하는 것과는 다릅니다.
3.StringBuilder: 스레드가 안전하지 않음
StringBuffer: 스레드로부터 안전함
여러 스레드에서 문자열 버퍼를 사용하는 경우 JVM은 StringBuilder의 작업이 가장 빠르더라도 안전하다고 보장할 수 없지만 StringBuffer가 올바르게 작동할 수 있다고 보장할 수는 있습니다. 물론 대부분의 경우 단일 스레드에서 작업을 수행하므로 대부분의 경우 속도상의 이유로 StringBuffer 대신 StringBuilder를 사용하는 것이 좋습니다.
세 가지 사용법 요약:
1. 소량의 데이터를 연산하고 싶다면 String을 사용하세요.
2. 대량의 데이터를 연산하기 위한 스트링 버퍼의 단일 스레드 연산 StringBuilder
3. 대용량 데이터 StringBuffer를 연산하기 위한 스트링 버퍼의 멀티스레드 연산