ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String과 StringBuffer, StringBuilder 클래스 차이
    JAVA/Java 2020. 1. 10. 02:45

    우선 String과 StringBuffer, StringBuilder의 차이를 알아보자.

     

    String은 문자를 수정하려면 지우고 다시 새로운 문자열을 리턴한다. 문자열 연산이 많아질수록 기능이 떨어진다.

     

    따라서 문자열을 변경하는 작업이 많을 경우 String 클래스보다는 java.lang에 StringBuffer or StringBuilder 클래스를

     

    사용하자.

     

                              https://www.youtube.com/watch?v=_bX7jslx6rY                                                                       String : 불변 문자를 수정려면 지우고 다시 생성.                                                      StringBuffer : 가변, 한번 만들고 필요시 크기를 변경하여 문자를 변경

     

    이 두 클래스는 내부 버퍼에 문자열을 저장해 두고, 그 안에서 추가,수정,삭제 작업을 하도록 설계되어있다.

     

    따라서 String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있다.

     

     

     

    그렇다면 StringBuffer와 StringBuilder의 차이는 뭘까?

     

    둘의 사용 방법은 동일하지만 차이는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 있냐에 차이이다.

     

    즉 StringBuffer은 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 스레드에 안전하지만,

     

    StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있다.

     

    다음은 StringBuffer 클래스에 오버라이드 되어있는 append 메소드 이다.

     

    보는 바와 같이 리턴 값 앞에 syncrhonized를 붙여 한 스레드가 작업 중 다른 스레드에 의해 간섭을 받지 못하도록

     

    동기화를 해주고 있다. 이는 락을 풀고 거는 작업이 추가되므로 속도면에서 Builder보다 느릴 수 있다.

     

    StringBuilder의 append 메소드

     

    다음은 String과 Buffer , Builder의 속도 차이를 보여준다.

     

    String은 문자열 추가 시 지우고 새로 인스턴스를 만들기 때문에 가장 느리고 StringBuffer는 StringBuilder에 비해

     

    synchronized 되어 락을 걸었다가 푸는 작업이 추가되므로 Builder 보다 느린 것을 볼 수 있다.

     

    https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer

    'JAVA > Java' 카테고리의 다른 글

    자바의 다형성 이란?  (0) 2020.03.30
    자바의 리플렉션  (0) 2020.03.28
    자바의 추상 클래스와 인터페이스  (0) 2020.03.28
    JVM (Java Virtual Machine) 의 구조  (0) 2020.02.22
    Gradle 과 Maven 차이?  (0) 2020.01.10
Designed by Tistory.