아이딕
아이딕 IT블로그
아이딕
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Algorithm (9)
      • BackJoon (0)
      • Programmers (5)
      • Data Structure (4)
    • Java (5)
    • Spring (1)
    • SQL (2)
      • MSSQL (1)
    • JavaScript (7)
    • React (3)
    • HTML (0)
    • CSS (1)
    • Build Tool (0)
      • Gradle (0)
      • Maven (0)
    • Tomcat (1)
    • Git (2)
    • IDE (3)
    • Error Log (1)
    • 개발 지식 (9)
    • 도서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리액트
  • 자료구조
  • Java
  • 호이스팅
  • 자바스크립트
  • programmers
  • 알고리즘
  • JVM
  • springboot
  • 자바
  • 프로그래머스
  • Git
  • 깃허브
  • JavaScript
  • 함수레벨스코프
  • VSCode
  • java Data Structure
  • 코딩테스트
  • 스코프
  • 자바자료구조
  • 인텔리제이
  • 블록레벨스코프
  • ES6
  • 변수호이스팅
  • Java 문자열 처리 최적화
  • GitHub
  • codingTest
  • react
  • Algorithm
  • IntelliJ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이딕

아이딕 IT블로그

Java

[Java] 문자열 연결 방식 비교: String vs StringBuilder vs StringBuffer

2024. 2. 5. 13:33
728x90
반응형

이번 글에서는 String에 + 연산자를 사용하는 방식과 StringBuilder 및 StringBuffer를 사용하는 방식을 비교하여 효율성에 대해 알아보고자 한다.

 

1. String에 + 연산자를 사용하는 방식

String에 + 연산자를 사용하여 문자열을 연결하는 방식은 간단하고 직관적이다. 하지만 이 방식은 문자열을 연결할 때마다 새로운 String 객체를 생성하므로 메모리 사용량이 많아진다. 특히 반복문 안에서 문자열을 연결할 경우 성능에 부정적인 영향을 미칠 수 있다.

String result = "";
for (int i = 0; i < 10; i++) {
    result += "문자열 " + i;
}

 

위의 예시에서는 반복문을 통해 문자열을 10번 연결하고 있다. 이 경우에는 매번 새로운 String 객체를 생성하므로 성능이 저하될 수 있다.

 

2. StringBuilder와 StringBuffer를 사용하는 방식

StringBuilder와 StringBuffer는 가변성을 가지고 있어 문자열을 효율적으로 연결하고, 내부 버퍼에 문자열을 추가하고, 필요에 따라 크기를 동적으로 조절할 수 있고, 동기화(synchronization) 여부에 따라 StringBuilder와 StringBuffer를 선택하여 사용할 수 있다. 

 

아래 글을 참고하면 StringBuilder와 StringBuffer 차이를 할 수 있다.

 

[Java] Java에서 문자열 연결에 대한 StringBuilder와 StringBuffer 비교

Java에서 문자열을 연결하는 데 사용되는 StringBuilder와 StringBuffer의 장점과 단점에 대해 알아보고, 이를 통해 어떤 경우에 어떤 클래스를 선택해야 하는지 알아보자. 1. StringBuilder의 장점과 단점 장

tmdrnr96.tistory.com

 

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
    sb.append("문자열 ").append(i);
}
String result = sb.toString();

 

위의 예제에서는 StringBuilder를 사용하여 문자열을 10번 연결한 후, toString() 메소드를 통해 최종 결과를 얻었다. StringBuilder를 사용하면 새로운 객체를 생성하지 않고도 문자열을 효율적으로 연결할 수 있다.

 

 

 

3. 정리

String에 + 연산자를 사용하는 방식과 StringBuilder 및 StringBuffer를 사용하는 방식의 효율성을 비교해보았다. 반복문과 같이 문자열을 자주 연결해야 하는 경우에는 StringBuilder를 사용하는 것이 성능상 이점이 있다. 하지만 단일 연결이나 멀티스레드 환경에서는 StringBuffer를 사용하는 것이 더 안전하다.

728x90
반응형

'Java' 카테고리의 다른 글

[Java] 예외 처리 printStackTrace()의 취약점과 대안  (2) 2024.02.01
[Java] 문자열 연결에 대한 StringBuilder와 StringBuffer 비교  (2) 2024.01.31
[JAVA] JVM(JAVA Virtual Machine) 이란?  (19) 2023.01.29
[JAVA] 자바(JAVA)란?  (12) 2023.01.22
    'Java' 카테고리의 다른 글
    • [Java] 예외 처리 printStackTrace()의 취약점과 대안
    • [Java] 문자열 연결에 대한 StringBuilder와 StringBuffer 비교
    • [JAVA] JVM(JAVA Virtual Machine) 이란?
    • [JAVA] 자바(JAVA)란?
    아이딕
    아이딕
    IT, 개발, 공부, 정리, 기타

    티스토리툴바