728x90
반응형
String
String은 문자열과 관련된 작업을 할 때 유용하게 사용할수 있다.
String class 는 불변이다.
특징
불변이다?
- String 인스턴스는 한번 생성 되면 값을 읽기만 할 수 있다.
- 불변(immutable class)객체라고 한다.
String text = "hello";
text+="world";
- 우리는 위와 같이 String을 쓰는 경우가 종종있다.
- 사실 값이 변경 되는 것이아니라.
- 내용이 합쳐진 새로운 Stirng 인스턴스가 생성된다.
StringBuffer
- string 의 불변의 단점을 보완해준다.
- 생성된 값을 변경하거나 추가할 수 있다.
- 가변(mutable class)클래스이다.
특징
- StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가진다.
- 버퍼 크기의 기본값은 16개의 문자를 저장할 수 있는 크기이다.
- 생성자를 통해 그 크기를 설정할 수 있다.
- 하지만 인스턴스 생성 시 사용자가 설정한 크기보다 언제나 16개의 문자를 더 저장할 수 있도록 여유 있는 크기로 생성된다. - 문자열을 바로 추가할 수 있으므로, 공간의 낭비도 없으며 속도도 매우 빨라진다.
불변 클래스(immutable class)와 가변 클래스(mutable class)
- String을 불변이다. StringBuffer는 가변이다.
- 그렇다면 가변을 쓰면 편할것 같은데 왜 불변을 쓸까?
- 멀티쓰레드 환경에서 객체가 변화되는 것을 방지 할수 있다.
- 신뢰성 높은 코드를 작성할 수 있다.
StringBuilder
- 가변 클래스이다.
- 기능은 StringBuffer와 유사하다
StringBuilder 와 StringBuffer의 차이점
- 그렇다면 둘의 차이점은 어떤게 있을까?
- StringBuffer는 Thread-safe 하다.
- StringBuilder는 Thread-safe하지 않다.
- 그렇기 때문에 Multi-Thread 환경에서는 StringBuffer를 사용하자.
728x90
반응형
'Language > Java' 카테고리의 다른 글
[Java] Exception(예외) (0) | 2021.08.23 |
---|---|
[Java] Checked Exception, Unchecked Exception (0) | 2021.08.23 |
[Java] String Object 와 String literal, 동일성 동등성 (0) | 2021.08.21 |
[Java] Annotation (0) | 2021.08.20 |
[Java] Collection Framework (0) | 2021.08.20 |
댓글