Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스 숫자의 표현 java
- 네트워크
- 자바
- 백준 11723
- 백준 15661
- java 반올림
- java
- 백준 4375
- 프로그래머스 도둑질 java
- 0으로 채우기
- 백준 16927
- mysql
- Math.ceil()
- Arrays
- 프로그래머스 옹알이 java
- 알고리즘
- 백준 16935
- java 올림
- java 내림
- Codility
- 코딩테스트
- Math.floor()
- 백준 18290
- time complexity
- 백준 17425
- 백준 14391
- sort
- 프로그래머스 연속된 수의 합 java
- 프로그래머스 네트워크 java
- Algorithm
Archives
- Today
- Total
취미처럼
[JAVA] StringBuffer, StringBuilder 본문
String str= "ABC";
System.out.println(str);
str += "DEF";
System.out.println(str);
String을 사용하여 DEF를 더하게 되면 기존에 선언된 ABC에 DEF를 더하는 것이 아니라 새로운 메모리에 ABCDEF가 생겨나고 기존에 ABC는 GC(가비지컬렉션)에 의해 삭제가 된다.
따라서 String를 이용하여 지속적으로 문자열을 바꾸는 것은 많은 메모리를 소모하게 된다.
이런 문제를 해결하기 위해 StringBuffer와 StringBuilder 등장하게 되었다.
StringBuffer/StringBuilder의 차이
StringBuffer/StringBuffer는 String 과 다르게 동작한다.
문자열 연산 등으로 기존 객체에 공간이 부족하게 되는 경우, 기존의 버퍼 크기를 늘리며 유연하게 동작합니다. StringBuffer와 StringBuilder 클래스가 제공하는 메서드는 서로 동일하지만 동기화 지원여부에 차이가 있다.
1. StringBuffer 클래스 : 스레드에 안전하게 설계 (ThreadSafe)
여러개의 스레드에서 하나의 StringBuffer 객체를 처리해도 전혀 문제가 되지 않는다.
2. StringBuilder 클래스 : 단일 스레드에서의 안전성만을 보장
여러개의 스레드에서 하나의 StringBuilder 객체를 처리하면 문제가 발생한다.
단순하게 속도와 성능 측면에서 고려하자면
StringBuilder > StringBuffer >>> String 이지만, 각각의 클래스들은 성능 외에도 사용 편의성, 멀티스레드 환경 등 여러가지 고려해야할 요인이 있으므로 이에 적합한 것을 사용하면 된다.
'JAVA > 이론' 카테고리의 다른 글
[JAVA] 날짜, 시간 (0) | 2021.03.22 |
---|---|
[JAVA] JVM (0) | 2021.03.22 |
[JAVA] Math.ceil() / Math.floor() / Math.round() (올림/내림/반올림) (0) | 2021.02.08 |
[JAVA] 형변환(String to int, int to String) (0) | 2021.02.08 |
[JAVA] 특정 자리 수 만큼 0으로 공백 채우기 (0) | 2021.02.08 |
Comments