주요 차이점은 StringBuilder는 변경 가능입니다. 반면 문자열은 변경할 수 없습니다.
String은 immutable, Immutable은 string 객체를 생성하면 수정할 수 없고 메모리에 항상 string형의 새로운 객체를 생성한다는 의미입니다.
반면 StringBuilder는 변경 가능합니다. 즉, 문자열 작성기 객체를 생성하면 매번 새 인스턴스를 생성하지 않고도 삽입, 교체 또는 추가와 같은 작업을 수행할 수 있습니다. 메모리의 한 위치에서 문자열을 업데이트하지만 메모리에 새 공간을 만들지 않습니다.
예시
using System; using System.Text; class DemoApplication{ public static void Main(String[] args){ String systemString = "Hello"; StringConcat(systemString); Console.WriteLine("String Class Result: " + systemString); StringBuilder stringBuilderString = new StringBuilder("Hello"); StringBuilderConcat(stringBuilderString); Console.WriteLine("StringBuilder Class Result: " + stringBuilderString); } public static void StringConcat(String systemString){ String appendString = " World"; systemString = String.Concat(systemString, appendString); } public static void StringBuilderConcat(StringBuilder stringBuilderString){ stringBuilderString.Append(" World"); } }
출력
위 예제의 출력은 다음과 같습니다 -
String Class Result: Hello StringBuilder Class Result: Hello World
-
StringConcat 메서드 사용:이 메서드에서는 "Hello" 문자열을 전달하고 "systemString =String.Concat(systemString, appendString);"을 수행합니다. 여기서 appendString은 연결할 "세계"입니다. Main()에서 전달된 문자열은 변경되지 않습니다. 이는 문자열이 변경 불가능하기 때문입니다. . 문자열 값을 변경하면 StringConcat() 새 문자열의 참조를 저장에 다른 객체와 systemString이 생성됩니다. . 그러나 Main() 및 StringConcat()의 참조 systemString은 다른 문자열을 참조합니다.
-
StringBuilderConcat 메서드 사용:이 메서드에서는 "Hello" 문자열을 전달하고 "stringBuilderString.Append(" World");"를 수행합니다. Main에서 문자열의 실제 값을 "Hello World"로 변경합니다. 이는 StringBuilder가 변경 가능하므로 값이 변경된다는 단순한 사실 때문입니다.