StringBuilder , StringBuffer

jisoo·2022년 7월 8일
0

문자열(String)

목록 보기
1/1
post-thumbnail

StringBuilder 언제 사용하면 좋을까? 🤔

String 클래스는 여러 개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야 하는데 만들어야 하는 문자열이 많을 경우 인스턴스의 생성 또한 그만큼 이루어지기 때문에 매우 비효율적이다.
이때, StringBuilder를 사용하면 이 문제를 해결 할 수 있다.

  • StringBuilder의 객체를 생성해준다.
  • append() 의 인자로 연결하고자 하는 문자열을 넣어서 StringBuilder의 객체를 통해 호출한다.
  • 문자열을 출력할 때, 변수에 문자열을 할당할 때에는 toString() 메서드를 사용하면 된다.



StringBuffer 란 🧐

String 클래스의 인스턴스는 한번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없다. 하지만 StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있다.

  • StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가진다.

  • 버퍼 크기의 기본값은 16개의 문자를 저장할 수 있는 크기인데, 생성자를 통해 별도로 설정할 수 있다.(하지만 인스턴스 생성 시 사용자가 설정한 크기보다 더 저장할 수 있도록 여유 있는 크기로 생성된다.)

    • append() : 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 마지막에 추가한다. (String 클래스의 concat() 과 같은 결과를 반환하지만 , 내부적인 처리속도가 훨씬 빠르다.)

    • capacity() : StringBuffer 인스턴스의 현재 버퍼 크기를 반환한다.

    StringBuffer str = new StringBuffer("jisoo");
     System.out.println(jisoo.capacity()); 
     // 이 경우 기본적으로 생성되는 여유 버퍼 크기인 16에 문자의 길이 5를 더한 총 21개의 문자를 저장할 수 있는 버퍼가 생성된다.
    • delete() : 전달된 인덱스에 해당하는 부분 문자열을 해당 문자열에서 제거한다.
    • deleteCharAt() : 메서드를 사용하면 특정 위치의 문자 한 개만 제거할 수 있다.
    • insert() : 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 지정된 인덱스 위치에 추가한다.
profile
Backend Developer 👩🏻‍💻

0개의 댓글