StringBuilder와 StringBuffer
StringBuilder, StringBuffer
StringBuilder, StringBuffer Class는 문자열을 변경하거나 이어붙이는 경우 메모리를 추가생성할 필요없이 기존 문자열을 확장시키는 클래스이다.
두 Class의 차이점은?
- StringBuilder
동기화 지원하지 않음
not thread-safe : 멀티스레드 환경에서 문자열의 안전을 보장해주지 않음
단일스레드에서 안전이 보장됨 - StringBuffer
동기화 지원
thread-safe : 멀티스레드 환경에서 문자열의 안전한 변경을 보장함
Thread-safe란?
멀티스레드프로그래밍에서 어떤 변수에 동시 접근이 이루어져도 프로그램 실현에 전혀 문제가 없음을 말한다. 즉, 두 thread가 동시에 한 문자열에 접근하더라도 안전한 변경을 보장해준다.
String의 한계
String Class는 한 번 생성되면 문자열이 변경되지 않는 불변(immutable)의 성질을 지니고 있다. 즉, 기존 문자열에 새로운 문자열을 추가하려면 메모리에서 문자열이 변경되는 것이 아니라 새로운 메모리 공간을 확보하여 문자열이 생성된다.
StringBuilder와 StringBuffer 사용 이유
String str = "abc"; str = str.concat("12");
이런 코드처럼 String의 변경이 빈번한 경우, 메모리 자원낭비를 초래하기 때문에 StringBuilder와 StringBuffer를 사용하는 것이 좋다.
그럼 String은 왜쓰지?
String 클래스는 불변(immutable) 속성을 가짐으로써 안전하다고 했습다. 값이 변경되지 않기 때문에 여러 스레드가 데이터를 공유하더라도 동기화를 신경쓸 필요가 없이 안정성이 유지되는 장점이 있다.
Author And Source
이 문제에 관하여(StringBuilder와 StringBuffer), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yuriyaam/StringBuilder와-StringBuffer저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)