본문 바로가기
Programming Language/Java & Kotlin

[Java] StringBuffer

by happy coding! 2018. 12. 1.
반응형

[Java] StringBuffer 




- StringBuffer 자료형은 문자열을 추가하거나, 변경할 때 주로 사용하는 자료형이다.

- StringBuffer는 아래와 같이 사용한다.


| StringBuffer 를 사용하였을 때(StringBufferTest.java)


| append

- StringBuffer 자료형은 append 라는 메소드를 이용하여 계속해서 문자열을 추가해나갈 수 있다.

- toString() 메소드를 이용하면 String 자료형으로 변경할 수 있다.



| String 을 사용하였을 때(StringTest.java)

- 두 개의 코드(code) 모두 출력은 동일하지만, 내부적으로 객체가 생성되고 메모리가 사용되는 과정은 다르다.

- StringBuffer의 경우 객체는 단 한번만 생성된다.

- String의 경우 String 자료형에 + 연산이 있을 때마다 새로운 String 객체가 생성된다. (문자열 간 + 연산이 있는 경우 java는 자동으로 새로운 String 객체를 생성한다. 그러므로 위에서는 총 4개의 String 자료형 객체가 만들어진다)


※immutable VS mutable

String 자료형은 한번 값이 생성되면, 그 값을 변경할 수 없다. 이렇게 값을 변경할 수 없는 것을 immutable 하다고 한다. trim, toUpperCase 등의 메소드를 보면 문자열이 변경되는 것처럼 생각될 수도 있겠지만, 해당 메소드 수행 시 또 다른 String 객체를 생성하여 리턴할 뿐이다. 


반면 StringBuffer는 값을 변경할 수 있다.(mutable) 즉 한번 생성된 값을 언제든지 수정할 수 있다.


※StringBuffer VS String

- StringBuffer 자료형은 String 자료형보다 무겁다. new StringBuffer()로 객체를 생성하는 것은 일반 String을 사용하는 것보다 메모리 사용량도 많고 속도도 느리다. 즉 문자열 추가나 변경 등의 작업이 많을 경우에는 StringBuffer를, 문자열 변경 작업이 거의 없는 경우에는 String 을 사용하는 것이 유리하다. 상황에 따라 적절하게 사용하도록 하자.


| insert

- insert 메소드는 특정 위치에 원하는 문자열을 삽입할 수 있다.

- 아래 코드는 0번째 위치에 "Hello "라는 문자열을 삽입한다. 


| substring

- substring 메소드는 String 자료형의 substring 메소드와 사용법이 동일하다.

- substring(시작위치, 끝위치)와 같이 사용하면 StringBuffer 객체의 시작 위치에서 끝위치까지 문자를 뽑아낸다. 



반응형

'Programming Language > Java & Kotlin' 카테고리의 다른 글

[Java] 람다식  (0) 2019.06.13
[Java] Enum 클래스  (0) 2019.04.18
[Java] 스트림 API  (0) 2019.04.16
[Java] 람다 표현식  (0) 2019.04.15
[Java] Java 배열 정렬  (0) 2018.11.27

댓글