클로이의 데이터 여행기

[JAVA] 문자열 선언방법 비교 (String vs StringBuffer,StringBuilder,StringJoiner) 본문

JAVA

[JAVA] 문자열 선언방법 비교 (String vs StringBuffer,StringBuilder,StringJoiner)

징느K 2019. 1. 29. 19:03


이번 포스팅에서는 '문자열 선언방법 비교'에 대해 알아보려고 합니다.

문자열 선언하는 방법이 많은 이유가 궁금했는데요. 아래에서 자세히 살펴보겠습니다.




1. 문자열을 선언하는 2가지 방법



문자열을 선언하는 방법은 크게 두 가지로 나눌 수 있습니다.

'String 클래스로 곧바로 선언하는 방법'과 다른 클래스 처럼 'new를 활용하여 선언하는 방법'입니다. 


상세 설명 및 비교는 아래와 같습니다.



 

 'String' 사용

'new 연산자'사용

ex. StringBuffer,StringBuilder

 방법

 String text = "사과";

 String text = new String("사과");

 내용

 string 데이터를 불변의 클래스로 설정

 new 연산자를 통해 String 클래스를 선언

 장점

 작성방법 간단함

 문자열 변경/연결 시, 적은 메모리 사용하며 속도가 빠름

 단점

 변경 시, 새로운 인스턴스를 계속해서 생성함

 문자열 변경/연결이 없을 때,

 불필요하게 이중으로 인스턴스를 만들게 됨






2. 문자열을 연결하는 4가지 방법


문자열 조작을 하다보면 문자열 연결해야하는 때가 많은데요. 

문자열을 연결할 때 어떤 클래스를 활용하느냐에 따라 속도나 안정성이 천차만별이라고 합니다. 


(사실 최근까지 로컬PC에서 돌릴 소스를 작성 할 때에는 속도,안정성을 고려할 필요가 없었기 때문에..^^ 

너무나 당연하게 String 클래스를 활용하여 문자열을 생성하고, +연산자를 활용하여 문자열을 연결하곤 했었습니다. )


문자열 연산자 별 특징은 아래와 같습니다. 



 

 특징

  + 연산자 

- 사용방법이 가장 간단

연산 시 성능 가장 낮음

 StringBuilder

- 연산 시 성능 가장 높음

(테스트 결과 Buffer,Joiner와 큰 차이는 없었음, 다음 포스팅 참고)

 StringBuffer

비교적 스레드에 안전함

 StringJoiner

연산 시, 구분자/접두사/접미사를 편리하게 넣을 수 있음



이상입니다.

다음 포스팅에서는 실제로 문자열 연산자들의 속도가 어떻게 차이나는지 살펴보려고 합니다.

감사합니다:D



Comments