추천, 2024

에디터의 선택

자바에서 String과 StringBuffer 클래스의 차이점

String과 StringBuffer는 모두 문자열에서 작동하는 클래스입니다. StringBuffer 클래스는 String 클래스의 피어 클래스입니다. String 클래스의 객체는 고정 길이입니다. StringBuffer 클래스의 객체는 확장 가능합니다. String과 StringBuffer의 기본적인 차이점은 "String"클래스의 객체가 변경 불가능 하다는 것입니다. "StringBuffer"클래스의 객체를 변경할 수 있습니다.

비교 차트

비교의 근거StringBuffer
기본String 객체의 길이는 고정되어 있습니다.StringBuffer의 길이를 늘릴 수 있습니다.
가감String 객체는 변경할 수 없습니다.StringBuffer 객체를 변경할 수 있습니다.
공연연결하는 동안 속도가 느립니다.연결하는 동안 더 빠릅니다.
기억더 많은 메모리를 소비합니다.메모리를 적게 소비합니다.
저장문자열 상수 풀.힙 메모리.

문자열의 정의

"String"은 Java의 클래스입니다. String 클래스의 객체는 고정 된 길이이며 기억해야 할 가장 중요한 점은 String 클래스의 객체가 "immutable"이라는 것입니다. String 객체를 초기화하면 해당 객체를 다시 수정할 수 없습니다. String 클래스의 객체는 String constant pool에 저장됩니다.

문자열을 만들 때마다 먼저 이해해 보겠습니다. string 유형의 객체를 만듭니다. 문자열 상수는 문자열 객체이기도합니다.

 System.out.println ( "안녕하세요, Teckpix 솔루션입니다."); 

위의 문장에서 "Hello this is Teckpix Solution"문자열은 문자열 상수입니다.

이제 예제를 통해 String 객체의 가변성을 이해합시다.

 String str = new String ( "Teckpix"); str.concat ( "솔루션"); system.out.println (str); // 출력 Teckpix 

위의 코드에서 두 개의 문자열 "Teckpix"와 "Solution"을 연결하려고했습니다. 문자열이 생성 될 때마다 String 타입의 객체가 만들어 짐을 알 수 있습니다. 따라서 문자열 "Teckpix"는 문자열 개체 "str"에 참조가 할당 된 개체를 만듭니다. 그런 다음 String 문자열의 "concat ()"메서드를 사용하여 "Solution"문자열을 "Teckpix"문자열과 연결하려고했습니다.

String 객체는 변경되지 않으므로 "Teckpix"문자열에는 수정이 수행되지 않고 "Solution"라는 새 문자열은 문자열 상수 풀에 다른 객체를 만듭니다. 그러나 개체 "솔루션"에 대한 참조는 개체에 의해 포착되지 않으므로 개체 솔루션에 대한 참조는 여전히 문자열 상수 풀에 존재하지만 손실됩니다. Teckpix 객체에 수정을 가하지 않았으므로 앞서 Teckpix 참조를 할당 한 객체 str을 인쇄하면 "Teckpix"문자열 만 인쇄됩니다.

StringBuffer의 정의

"StringBuffer"클래스는 "String"클래스의 피어 클래스입니다. StringBuffer 클래스는 문자열에 더 많은 기능을 제공합니다. StringBuffer 클래스의 객체는 변경 가능하며 객체는 수정할 수 있습니다. StringBuffer 객체의 길이는 증가 할 수 있습니다. StringBuffer 객체 또는 그 끝에 할당 된 문자열 리터럴 중간에 문자 또는 하위 문자열을 삽입 할 수 있습니다. StringBuffer는 특정 길이가 요청되지 않은 경우 16 개의 추가 문자를위한 공간을 할당합니다.

StringBuffer 객체의 가변성을 예제를 통해 이해합시다.

 StringBuffre Sb = 새 StringBuffer ( "Teckpix"); Sb.append ( "Solution"); system.out.println (Sb); // 출력 Teckpix 솔루션 

우리는 StringBuffer 객체가 변경 가능하다는 것을 알고 있습니다. append () 메서드는 StringBuffer 객체 Sb를 초기에 객체 "Teckpix"의 참조가 먼저 수정되도록 수정합니다. append () 메소드는 새로운 문자열 리터럴 "Solution"을 문자열 리터럴 "Teckpix"의 끝에 추가합니다. 이제 개체 Sb를 인쇄하면 수정 된 문자열 개체 "Teckpix Solutions"가 인쇄됩니다.

String과 StringBuffer의 주요 차이점

  1. String 객체의 길이는 고정되어 있지만 필요에 따라 StringBuffer 객체의 길이를 늘릴 수 있습니다.
  2. String 객체는 변경 불가능합니다. 즉, 객체를 다시 할당 할 수없는 반면, StringBuffer 객체는 변경 가능합니다.
  3. String 객체는 성능이 느린 반면 StringBuffer 객체는 빠릅니다.
  4. String 객체는 메모리를 더 많이 사용하지만 StringBuffer 객체는 메모리를 더 적게 사용합니다.
  5. String 객체는 상수 풀에 저장되지만 StringBuffer 객체는 힙 메모리에 저장됩니다.

결론:

StringBuffer 객체는 String 클래스와 비교하여 문자열에 더 많은 기능을 제공합니다. 따라서 String 클래스 대신 StringBuffer를 사용하는 것이 바람직합니다.

Top