문자열 클래스
Java에서 문자열을 다루는 데에 사용되는 주요 클래스는 String, StringBuffer, StringBuilder가 있다. 모두 문자열을 표현하고 조작하는 목적으로 사용되지만, 내부적인 동작 방식과 특성이 다르다.
String 클래스
- String 클래스는 불변(Immutable)한 문자열을 표현하는 데 사용
- 즉, 한 번 생성된 문자열은 수정할 수 없으며, 문자열 연산 등의 작업을 수행할 때마다 새로운 문자열 객체가 생성
- 문자열 연산시 새로 객체를 만드는 오버헤드 발생
- 멀티스레드 에서 동기화를 신경 쓸 필요 X
문자열 연산이 적고, 조회가 많은 멀티스레드 환경에서 좋다.
StringBuffer/StringBuilder 클래스
- 공통점
- new 연산을 통해 클래스를 한 번만 만든다. (Mutable)
- 문자열 연산시 새로 객체를 만들지 않고 크기를 변경시킨다.
- 차이점
- StringBuffer : 동기화를 지원하기 때문에 멀티스레드 환경에서 안전 (Thread-Safe)
- StringBuilder : 동기화를 지원하지 않기 때문에 단일스레드 환경에서 유리 (Thread-Safe X)
StringBuffer 클래스는 문자열 연산이 많은 멀티스레드 환경에서 사용
StringBuilder 클래스는 문자열 연산이 많인 단일스레드 또는 스레드 신경 안쓰는 환경에서 사용
오브젝트 클래스
- Object 클래스는 Java의 모든 클래스의 최상위 부모 클래스
- 모튼 클래스는 암시적으로 Object 클래스를 상속받는다. 따라서 Object 클래스의 메서드와 기능은 Java 클래스의 모든 객체에서 사용할 수 있다.
- 필드가 없고 메서드로 구성되어 있으며 해당 메서드들은 모든 클래스에서 이용할 수 있다.
Object 클래스에서 주로 사용되는 메서드
- equals() : 객체의 동등성을 비교하는 메서드로 '==' 연산자와 동일한 동작을 수행
- hashCode() : 객체의 해시 코드 값을 반환
- toString() : 객체를 문자열로 표현하여 반환
- wait() : 갖고 있던 고유 Lock 해제, Thread를 잠들게 함
- notify() : 잠들던 Thread 중 임의의 하나를 깨움
- notifyAll() : 잠들어 있넌 Thread 를 모두 깨움
'Languages > Java' 카테고리의 다른 글
[Java] 스레드 (Thread) (0) | 2023.08.31 |
---|---|
[Java] Casting (0) | 2023.08.10 |
[Java] 직렬화 (Serialization) (0) | 2023.07.31 |
[Java] 오토 박싱(Autoboxing) & 오토 언박싱(Unboxing) (0) | 2023.07.31 |
[Java] Primitive Type & Reference Type (0) | 2023.07.31 |