일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- WordCloud R
- RNN Attention
- 딥러닝개념
- r word2vec
- 자연어처리
- R에서의 워드클라우드
- R에서의 wordcloud
- R 워드클라우드
- R dataframe
- StringBuffer vs StringBuilder
- R TF-IDF
- self-attention
- deeplearning용어
- 마르코프 체인
- deeplearning개념
- 어탠션
- 도날드노만
- selfattention
- 통계기반자연어처리
- 언어모델
- HashMap
- 체험디자인
- 딥러닝용어
- 자언어처리모델
- StringJoiner
- R 키워드 가중치
- 상호작용디자인
- 마르코프
- word2vec
- wordVector
- Today
- Total
클로이의 데이터 여행기
[JAVA] 문자열 선언방법 비교 (String vs StringBuffer,StringBuilder,StringJoiner) 본문
이번 포스팅에서는 '문자열 선언방법 비교'에 대해 알아보려고 합니다.
문자열 선언하는 방법이 많은 이유가 궁금했는데요. 아래에서 자세히 살펴보겠습니다.
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
'JAVA' 카테고리의 다른 글
[JAVA] 키워드 카운트(keyword count) (0) | 2019.02.14 |
---|---|
[JAVA] 문자열 연결 처리 속도 높이기 (1) | 2019.02.07 |
[JAVA] isFile(),isDirectory(),exists() 비교 (0) | 2019.01.28 |
[JAVA] 동일한 값(데이터) 기준으로 결합(합치기) (0) | 2019.01.17 |
[JAVA] equals와 == 비교 (0) | 2019.01.09 |