Java---StringBuffer 및 StringBuilder

11004 단어 Java 기반
Concept
문자열이 자주 변경되지 않는 경우 String을 우선적으로 선택합니다.
스트링'+'결합은 문자열을 수정하는 데도 사용될 수 있다. String str = “I” + “am” + “String”할 때 효율이 비교적 빠르지만'+'로 여러 스트링 대상을 연결하는 것은 공간을 소모하고 실행 효율이 낮다(신축 대상, 회수 대상이 많은 시간을 소비한다). 특히 메모리에 인용 대상이 없는 것이 많아지면 JVM의 GC가 작동하기 시작하여 시스템 성능에 영향을 미친다.
StringBuffer는 문자열을 대량으로 연결할 때 중간 대상의 문제를 해결하기 위해 제공하는 클래스입니다. 문자열과 유사하지만 수정할 수 있는 안전한 가변 문자열입니다.
String Builder는 JDK 5가 발표된 후에 String Buffer에 대한 보충 클래스로서 String Buffer와 동등류이다. 단지 그는 단일 라인을 위해 전문적으로 설계한 것일 뿐이다.
StringBuffer
  • StringBuffer는 언제든지 특정한 문자 서열을 포함하지만 서열의 길이와 내용은 특정한 방법으로 호출하여 수정할 수 있습니다.
  • StringBuffer는 다중 스레드를 사용할 때 매우 안전하다. 이 방법은 필요할 때 동기화되어 특정한 실례에 대한 모든 조작이 특정한 시퀀스 순서에 따라 발생하도록 한다. 이것은 모든 스레드가 보내는 방법의 호출 순서와 일치한다.
  • StringBuffer에 대한 주요 조작은 append와 insert 방법인데 이런 방법은 모두 다시 불러와서 어떤 형식의 데이터도 받아들일 수 있다.
  • 각 StringBuffer의 용량은 다음과 같습니다.StringBuffer 내의 문자열 시퀀스 길이가 용량을 초과하지 않으면 새 내부 버퍼 배열 공간을 분배하지 않습니다.내부 버퍼가 넘치면 자동으로 공간을 확장합니다.

  • StringBuilder
  • StringBuilder는 가변 문자열 시퀀스입니다.이 클래스는 StringBuffer와 병존하는 API를 제공하지만 이러한 방법으로는 동기화를 보장할 수 없습니다.이 종류는 StringBuffer의 대체로 설계되었는데, StringBuffer가 단일 라인에 사용될 때 (흔히 대부분의 경우).
  • StringBuilder의 예는 다중 스레드에 사용될 때 안전하지 않습니다.스레드 동기화가 필요한 경우 StringBuffer를 사용하는 것이 좋습니다.

  • Method
    Type
    Method
    Significance
    StringBuffer
    append(int i)
    많은 리셋 형식이 있는데, 매개 변수를 추가하는 String은 버퍼의 끝에 나타난다
    StringBuffer
    insert(int offset,int i)
    많은 리셋 형식이 있는데, 매개 변수를 추가하는 String은 지정한 위치로 표시됩니다
    char
    charAt(int index)
    시퀀스에서 지정한 인덱스의char값을 되돌려줍니다
    StringBuffer
    delete(int start, int end)
    시퀀스에서 하위 문자열 문자 제거하기
    int
    indexOf(String str)
    지정한 하위 문자열의 첫 번째 색인을 되돌려줍니다.
    int
    lastIndexOf(String str)
    뒤쪽에서 앞으로 수색하다
    int
    length()
    버퍼의 문자 수를 되돌려줍니다
    StringBuffer
    replace(int start, int end,String str)
    지정한 문자열을 매개 변수 문자열 문자로 바꾸기
    StringBuffer
    reverse()
    반전 시퀀스
    void
    setCharAt(int index,char ch)
    인덱스 i의 문자를ch로 설정
    CharSequence
    subSequence(int start, int end)
    하위 문자열의 새char 서열을 되돌려줍니다
    String
    substring(int start,[int end])
    하위 문자열의 스트링 형식을 반환합니다.
    String
    toString()
    시퀀스에서 데이터를 반환하는 String 표현
    StringBuilder와 StringBuffer 방법은 동일
    Example
    public class test{
        public static void main(String args[]){
    
            StringBuilder str = new StringBuilder();
            str.append("BuilderBuffer");
            System.out.println(str);//BuilderBuffer
            // append StringBuilder 
            str.insert(7,"and");
            System.out.println(str);//BuilderandBuffer
            // append StringBuilder 
            System.out.println(str.charAt(4));//d
            // 4 char 
            System.out.println(str.indexOf("B"));//0
            System.out.println(str.lastIndexOf("B"));//10
            // B  
            System.out.println(str.length());//16
            // StringBuilder 
            System.out.println(str.replace(7,10,"or"));//BuilderorBuffer
            // 
            System.out.println(str.subSequence(7,9) instanceof CharSequence);//true
            // char 
            System.out.println(str.substring(9,15));//Buffer
            // String 
            System.out.println(str.delete(7,9));//BuilderBuffer
            // 
            System.out.println(str.reverse());//reffuBredliuB
            // 
    		String str2 = str.toString();
            System.out.println(str2);//reffuBredliuB
            // toString   String 
        }
    }
    

    Difference
  • String 클래스와 달리 StringBuffer와 StringBuilder 클래스의 대상은 여러 번 수정되고 새로운 미사용 대상이 생기지 않는다.
  • 적은 양의 데이터를 조작하려면 String을 사용합니다.만약 대량의 문자열 조작 상황이 있다면, 단일 스레드 상황에서는 스트링 버퍼를 사용해야 하고, 다중 스레드 상황에서는 스트링 버퍼를 사용해야 한다.
  • 우리는 전체적으로 StringBuilder를 더욱 주목해야 한다. 이것은 StringBuffer와 같은 조작을 지원하고 그것보다 빠르다. 왜냐하면 이러한 방법은 실행할 때 비동기적이기 때문이다.
  • 좋은 웹페이지 즐겨찾기