진행중인 안드로이드 스터디에서 String, StringBuilder에 대한 차이점을 들은 적이 있다. 아아~이랬지만 혼자 설명은 못할 거 같아서 제대로 정리해보았다.
1.string,stringBuilder, stringBuffer에 대해 얘기할 때 나오는 얘기들은 아래와 같다.
String, StringBuilder, StringBuffer 모두 Heap에 할당되는데 불변or가변 유무, 멀티 스레드 환경의 동시접근 허용 유뮤로 적절한 사용을 꾀할 수 있다.
String은 가변, StringBuilder와 StringBuffer는 불변이다.
StringBuilder는 멀티스레드의 동시접근이 가능하고, StringBuffers는 스레드 하나씩 접근하게 한다.
이 두가지 기준으로 정리를 했다.
String은 내부에 value값이 final로 선언되어 있는 불변객체이다.
불변객체이다...
-> 문자열 값이 바뀌지 않을 때 사용하는 게 좋다
-> 문자열 값을 바꿀 때마다 새로운 객체가 Heap에 생성된다
-> 불변객체이므로 멀티 스레드 환경에서 안전하다(여기저기서 값을 변경하는 일이 없기 때문)
string, stringBuilder, stringBuffer: https://yk-coding-letter.tistory.com/11
동시성 제어: https://kotlinworld.com/36
자바의 메모리 구조:https://thenaeul.wordpress.com/2020/12/20/java-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0/