[Java] StringBuffer 자료형

🌈 m1naworld ·2022년 7월 31일
0

자바를 잡아! 👻

목록 보기
9/19
post-thumbnail

StringBuffer는 문자열을 추가하거나 변경할 때 주로 사용하는 자료형.
비슷한 자료형으로는 StringBuilder가 있음. 사용법은 둘이 동일하며, StringBuffer는 멀티 스레드 환경에서 안전하다는 장점이 있고 StringBuilder는 StringBuffer보다 성능이 우수한 장점이 있음.
따라서 동기화를 고려할 필요가 없는 상황에서는 StringBuffer보다는 StringBuilder를 사용하는 것이 유리함.


📍 append

1) StringBuffer는 append메소드를 통해 문자열을 추가해 나갈 수 있음

StringBuffer sb = new StringBuffer(); 
sb.append("hello");
sb.append(" ");
sb.append("jump to java");
String result = sb.toString();  // toString() -> String 자료형으로 변환
System.out.println(result);

>> hello jump to java

2) String 자료형만을 가지고 문자열을 늘린 경우
String result = "";
result += "hello";
result += " ";
result += "jump to java";
System.out.println(result);

>> hello jump to java

두 예제의 결과는 동일하지만 내부적으로 객체가 생성되고 메모리가 사용되는 과정은 다름.

1)의 경우 StringBuffer객체는 한번만 생성

2)의 경우는 String자료형에 +연산이 있을 때마다 새로운 String객체가 생성됨(문자열 간 + 연산이 있는 경우 자바는 자동으로 새로운 String 객체를 만들어 냄). 즉, 총 4개의 String 자료형 객체가 만들어진 것임.

  • String자료형은 한번 값이 생성되면 그 값을 변경할 수 없으며 이러한 성질을 immutable하다고 함.
    trim, toUpperCase 등의 메소드를 보면 문자열이 변경되는 것 처럼 생각될 수 있지만 해당 메소드 수행 시 또 다른 String객체를 생성하여 리턴할 뿐임.
    하지만 StringBuffer는 값을 변경할 수 있음(mutable 함). 즉 한번 생성된 값은 언제든 수정할 수 있음.

⚠️ StringBuffer 자료형은 String 자료형보다 무거운 편에 속함. 일반 String을 사용하는 것보다 메모리 사용량도 많고 속도도 느림. 따라서 문자열 추가나 변경등의 작업이 많을 경우에는 StringBuffer를, 문자열 변경 작업이 거의 없는 경우에는 그냥 String을 사용하는 것이 유리❗️


📍 insert

특정 위치에 원하는 문자열 삽입

StringBuffer sb = new StringBuffer();
sb.append("jump to java");
sb.insert(0, "hello "); // 0번째 위치에 "hello "문자열 삽입
System.out.println(sb.toString());

>> hello jump to java

📍 substring

원하는 문자 추출

StringBuffer sb = new StringBuffer();
sb.append("Hello jump to java");
System.out.println(sb.substring(0, 4));  // substring(시작위치, 끝위치)

>> Hell

Ref.
점프 투 자바

profile
개발자로 사는 내 삶은 즐거워 👾

0개의 댓글