>Java >java지도 시간 >Java에서 String과 StringBuffer의 차이점은 무엇입니까? (차이 비교)

Java에서 String과 StringBuffer의 차이점은 무엇입니까? (차이 비교)

不言
不言원래의
2018-09-18 17:19:438199검색

이 기사에서는 Java에서 String과 StringBuffer의 차이점이 무엇인지 설명합니다. (차이점 비교) 도움이 필요한 친구들이 참고할 수 있을 만큼 참고할만한 가치가 있습니다.

Foreword

  1. String과 StringBuffer는 모두 Java의 문자 연산을 위한 클래스입니다

  2. 특히 String의 경우 다음과 같은 할당 코드를 자주 봅니다. String str = "Hello World"는 int처럼 보이고 제 생각에는 사실 Java의 기본 데이터 유형은 아닙니다. String은 기본 데이터 유형처럼 직접 할당할 수 있는 특수 클래스입니다.

  3. 자바에는 문자에 대해 연산을 수행할 수 있는 세 가지 클래스가 있습니다.

(1) 문자는 단일 문자 연산을 수행하는 클래스입니다.
(2) String은 문자열에서 작동하는 불변 클래스입니다.
(3) StringBuffer도 문자열에 대해 작동하지만 변수 클래스입니다.

Java에서 StringBuffer 클래스와 StringBuffer 클래스의 차이점

  1. StringBuffer 객체의 내용은 수정할 수 있습니다. String 객체는 일단 생성되면 수정하거나 재할당할 수 없습니다.

  2. String은 기본 유형이 아닌 객체이며, 일단 생성되면 해당 값을 수정할 수 없습니다.

  3. 기존 String 개체를 수정하려면 실제로 새 개체를 만들고 여기에 새 값을 저장합니다.

  4. String은 최종 클래스이므로 상속될 수 없습니다.

  5. StringBuffer는 수정될 때 문자열처럼 다시 설정되지 않습니다. 생성자를 통해서만 설정할 수 있습니다. 객체가 생성된 후 메모리 공간이 할당되고 처음에는 null이 저장됩니다. StringBuffer에 값을 할당할 때 추가 메서드를 사용할 수 있습니다. obj.append("hello");

  6. StringBuffer는 문자열 연결 작업에서 String보다 더 효율적입니다.

  7. 프로그램에서 문자열에 대한 수정과 연결 작업이 자주 필요한 경우 StringBuffer를 사용하는 것이 성능이 더 높아집니다.

  8. String 클래스에는 기존 문자열의 특정 문자를 변경할 수 있는 방법이 없습니다. Java 문자열의 단일 문자를 변경할 수 없으므로 JDK 문서에서는 String 클래스의 개체를 호출합니다.

  9. 그러나 불변 문자열에는 큰 장점이 있습니다. 즉, 컴파일러가 문자열을 공유할 수 있습니다.

  10. StringBuffer는 스레드로부터 안전하고 멀티 스레드 프로그램에서 쉽게 사용할 수 있지만 프로그램 실행 효율성이 상대적으로 느립니다.

  11. StringBuffer 클래스의 메서드는 추가, 삽입, 삭제 등 문자열 변경에 중점을 둡니다. 이는 StringBuffer와 String 클래스의 주요 차이점이기도 합니다.

String 및 StringBuffer 연결 문자열 비교

  1. String str = new String("Hello World");str += "hello world"; 이 문자열 연결의 처리 프로세스:

    (1) StringBuffer 생성 ;
    (2) Append() 메소드를 호출합니다.
    (3) 마지막으로 StringBuffer는 String의 값을 재할당하기 위해 toString()을 호출합니다.
    (4) 이러한 관점에서 보면 String의 연결 작업에는 StringBuffer보다 더 많은 작업이 필요합니다. 효율성이 향상됩니다.
    (5) 게다가 String은 불변 객체이기 때문에 재할당될 때마다 새로운 객체가 생성되므로 원래 객체는 쓸모가 없게 되고 가비지 수집이 되어 성능에도 영향을 미치게 됩니다.

  2. StringBuffer 클래스는 지정된 길이의 메모리 블록을 미리 할당하여 문자열 버퍼를 생성할 수 있는 보조 클래스입니다. 이러한 방식으로 StringBuffer 클래스의 추가 메서드를 사용하여 문자를 추가하는 것이 String의 "+" 연산자를 사용하여 기존 문자열 끝에 문자를 추가하는 것보다 훨씬 더 효율적입니다.

  3. 문자열에 문자를 추가할 때마다 문자열 개체는 더 큰 문자열을 수용할 수 있는 새로운 메모리 공간을 찾아야 합니다. 이는 의심할 여지 없이 매우 시간이 많이 걸리는 작업입니다. 여러 문자를 추가한다는 것은 문자열에 대한 메모리를 계속해서 재할당한다는 의미입니다. StringBuffer를 사용하면 이 문제를 피할 수 있습니다.

위 내용은 Java에서 String과 StringBuffer의 차이점은 무엇입니까? (차이 비교)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.