> Java > java지도 시간 > JAVA에서 String 클래스와 StringBuffer 클래스의 차이점

JAVA에서 String 클래스와 StringBuffer 클래스의 차이점

高洛峰
풀어 주다: 2017-01-21 16:31:32
원래의
1384명이 탐색했습니다.

Java에는 String 클래스와 StringBuffer 클래스(버퍼 문자열 처리 클래스)라는 두 가지 유형의 문자열 연산이 있습니다.
둘의 차이점에 대해 간단히 이야기해보겠습니다.
String 클래스와 StringBuffer 클래스는 모두 문자열 작업을 구현하는 해당 메서드를 제공하지만 약간 다릅니다.

(1) 문자열 클래스
이 클래스가 문자열을 생성하면 해당 객체는 변경할 수 없습니다. String 클래스의 내용과 길이는 고정되어 있습니다. 프로그램이 문자열 정보를 얻으려면 시스템에서 제공하는 다양한 문자열 연산 메서드를 호출해야 합니다. 다양한 시스템 메소드를 통해 문자열에 연산을 적용할 수 있지만, 이는 객체 인스턴스 자체를 변경하지 않고 새 인스턴스를 생성합니다. 시스템은 객체에 포함된 실제 문자 수를 기반으로 String 클래스 객체에 메모리를 할당합니다.

(2) StringBuffer 클래스
Buffer라는 단어를 찾아보니 버퍼링이라는 뜻이더군요. 이 클래스에는 버퍼링 기능이 있어야 합니다. 이 클래스는 변경 가능한 문자열을 처리합니다. StringBuffer 클래스의 문자열을 수정하려면 새 문자열 개체를 만들 필요가 없고 원본 문자열에 직접 작업하면 됩니다. 이 클래스의 다양한 문자열 조작 방법은 String 클래스에서 제공하는 방법과 동일하지 않습니다. 시스템은 StringBuffer 클래스에 메모리를 할당할 때 현재 문자가 차지하는 공간 외에 추가 16자 버퍼도 제공합니다. 각 StringBuffer 객체에는 특정 버퍼 용량이 있습니다. 문자열 크기가 용량을 초과하지 않으면 새 용량이 할당되지 않습니다. 문자열 크기가 용량을 초과하면 용량이 자동으로 늘어납니다.

다음은 몇 가지 구체적인 예입니다

문자열 연결

String 클래스에는 두 가지 메서드가 있습니다.

첫 번째("+")

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1+" "+str2);
    }
  }
로그인 후 복사

두 번째 유형("concat")

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1.concat(str2));
    }
  }
로그인 후 복사

StringBuffer 클래스 메서드

public class str{
  public static void main(String[] args){
    //构建一个缓冲字符串的对象sb
    StringBuffer sb=new StringBuffer("加特效!");
    //通过append方法,在这个对象后面添加一个新字符串
    sb.append(" Duang~~");
    System.out.println(sb);
  }
}
로그인 후 복사

최종 출력 결과 다음은 특수 효과를 추가하는 것입니다! Duang~~

위의 예를 보면 String 클래스를 확장할 때 두 개의 객체를 인스턴스화해야 한다는 것을 어렵지 않게 알 수 있습니다. 각 객체는 일정량의 메모리를 차지하지만 StringBuffer 클래스는 그렇지 않습니다. 다른 클래스를 인스턴스화해야 합니다. 새 클래스의 경우 확장 메서드만 호출하면 됩니다.

또 다른 점은 StringBuffer 클래스의 메모리 용량이 확장 가능하다는 것입니다. 구체적인 예를 들면 다음과 같습니다.

public class str{
  public static void main(String[] args){
     //声明字符串对象sb
      StringBuffer sb=new StringBuffer(40);
      System.out.println(sb.capacity());   //输出字符串的容量capacity
      sb.ensureCapacity(100);         //扩充容量
      System.out.println(sb.capacity());   //输出字符串的容量capacity
    }
  }
로그인 후 복사

capacity() 메서드는 문자열 개체가 메모리에 보유할 수 있는 문자열 수를 나타냅니다. 메모리 용량을 확장하려면 verifyCapacity() 메서드를 사용할 수 있습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

JAVA에서 String 클래스와 StringBuffer 클래스의 차이점에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿