요르딩딩

[JAVA] StringBuffer 본문

[Java]

[JAVA] StringBuffer

요르딩딩 2021. 5. 26. 16:27
728x90
반응형

String VS StringBuffer

[String 클래스]

1. String 클래스의 인스턴스는 한번 생성되면, 그 값을 읽기만 가능하고, 변경할 수 없습니다.

 

2. 덧셈(+) 연산자를 이용해 String 인스턴스의 문자열을 결합하면, 내용이 합쳐진 새로운 String 인스턴스를 생성합니다.

    따라서 문자열을 많이 결합하면 결합할수록 공간의 낭비뿐만 아니라 속도 또한 매우 느려지게 됩니다.

 

3. String 클래스와 같이 인스턴스가 한 번 생성되면 그 값을 변경할 수 없는 클래스를 불변 클래스(immutable class)라고 합니다.

 

[StringBuffer 클래스]

1. StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있습니다.

 

2. StringBuffer 클래스는 내부적으로 버퍼(buffer)라는 독립적인 공간을 가집니다.

    버퍼 크기의 기본값은 16개의 문자를 저장할 수 있는 크기이며, 생성자를 통해 그 크기를 별도로 설정할 수도 있습니다.

    하지만 인스턴스 생성 시 사용자가 설정한 크기보다 언제나 16개의 문자를 더 저장할 수 있도록 여유 있는 크기로 생성됩니다.

 

3. StringBuffer 인스턴스를 사용하면 문자열을 바로 추가할 수 있으므로, 공간의 낭비도 없으며 속도도 매우 빨라집니다.

    이러한 StringBuffer 클래스는 java.lang 패키지에 포함되어 제공됩니다.

 

4. StringBuffer 클래스와 같이 자유롭게 인스턴스의 값을 변경할 수 있는 클래스를 가변 클래스(mutable class)라고 합니다.

 

[그럼에도 String을 사용하는 이유]

단점이 있는 불변 클래스(String클래스)를 사용하는 이유는 멀티 스레드 환경에서 객체가 변화되는 상황이라면 불변 인스턴스를 사용하는 것이 좀 더 신뢰할 수 있는 코드를 작성할 수 있기 때문입니다.

즉, 하나의 객체에 접근하면서 각각의 객체가 서로 영향을 주어서는 안 되는 경우에 불변 인스턴스를 사용하면 값이 변하지 않는다는 점이 보장됩니다.

 

[Test]

 

추가 : str.length = 0; 보다 str.isEmpty()가 더 빠르다.

 

참고: http://tcpschool.com/java/java_api_stringBuffer

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

728x90
반응형

'[Java]' 카테고리의 다른 글

param( "A,B,C" ) -> array ( [A,B,C] )으로 변경  (0) 2021.11.23
[작성중 ]싱글톤 패턴  (0) 2021.08.10
[JAVA] (collection) iterator  (0) 2021.05.24
[JAVA] String.getBytes("")';  (0) 2021.05.20
[JAVA] lastIndexOf(), String.format("%02d")~  (0) 2021.05.20
Comments