String 클래스와 StringBuilder 클래스의 공통점
- 참조(reference)자료형 : 값을 갖는 '객체'의 주소를 참조하고 실제 값은 힙(heap) 메모리에 저장
- Java에서 문자열을 다루기(저장,조작 등) 위한 클래스
- 문자열을 연결,비교,길이를 반환하는 기능을 제공
- 문자열을 출력하는데 사용
String 클래스와 StringBuilder 클래스의 차이점
- String 클래스는 불변(immutable)성 때문에 문자열 연결 및 변경 시 마다 새로운 객체가 생성됨
- StringBuilder 클래스는 가변(mutable)성을 갖기에 문자열 연결 및 변경 시 기존에 생성했던 객체를 수정하여 새로운 객체를 생성하지 않음
- 위 특성(불변과 가변)으로 인해 스레드 안정성에 있어서 String(불변)은 안전성 보장 O , StringBuilder(가변)는 안전성을 보장 X
(스레드 : 프로그램의 실행 단위로 , 멀티스레드 -> 동시에 여러 작업을 수행)
- 또한 그 특성(불변과 가변)으로 인해 각 클래스에 따라 지원하는 메서드가 다름
위와 같은 특성으로 인해 하고자 하는 문자열 처리에 적합한 클래스를 선택적으로 사용하면 되는데
문자열 더하기의 경우 명시적이고 소량의 문자열을 합치는 경우 '+' 연산자를 사용해도 괜찮지만
반복문을 통한 많은 수의 문자열 합치기 등, 더할 문자열이 많을 것으로 예상될 때는
String 보다 StringBuilder를 사용하는 것을 고려하면 좋을 것 같다.
/* StringBuilder 클래스는 .append() 메서드를 이용하여 문자열을 추가 */
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
sb.append("Num: ").append(i).append(", ");
}
String result = sb.toString();
System.out.println(result);
// 출력되는 결과 :
// Num: 0, Num: 1, Num: 2, Num: 3, Num: 4, Num: 5, Num: 6, Num: 7, Num: 8, Num: 9,
'Java' 카테고리의 다른 글
Java BigInteger 클래스, 자바에서 아주 큰 정수를 다뤄야 할 때 (0) | 2023.10.07 |
---|---|
Java 자바 LinkedHashMap / 삽입된 순서를 유지하는 HashMap / Map 순서 유지 (0) | 2023.05.21 |
Java String 문자열 데이터 유효성 체크 (0) | 2023.05.05 |
JSON 형식 문자열 Java List<String, Object> 로 변환, JSON 문자열 파싱 (0) | 2023.04.30 |
자바 스트림 Java Stream List<Integer> 합계,평균,최댓값,최솟값 구하기 (0) | 2023.04.16 |
최근댓글