자바에서 문자열을 다루는 대표적인 클래스는 String, StringBuffer, StringBuilder가 있습니다.
클래스마다 특징이 다르므로, 연산횟수가 많아지거나, 멀티쓰레드 등의 환경에서는 적절한 클래스를 골라 사용하는 것이 중요합니다.
// StringBuffer 👉 synchronized 키워드가 있다.
@Override
public synchronized StringBuffer append(Object obj) {
toStringCache = null;
super.append(String.valueOf(obj));
return this;
}
// StringBuilder 👉 synchronized 키워드가 없다.
@Override
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
}
분류 | String | StringBuffer | StringBuilder |
---|---|---|---|
변경유무 | 문자열 연산이 적은 경우 | 문자열 연산이 많은 경우 | 문자열 연산이 많은 경우 |
쓰임상황 | 멀티 쓰레드 환경인 경우 | (동기화OK) 멀티 쓰레드 환경인 경우 | 단일 쓰레드 환경인 경우 or 동기화를 고려하지 않아도 되는 경우 |
자바의 클래스를 선언할 때 extends
키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object
클래스를 상속하게 된다.
필드가 없고 메소드로 구성되어 있음. 해당 메소드들은 모든 클래스에서 이용할 수 있음.
🔎 java.lang 패키지
: 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합입니다.
따라서 자바에서는 java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있도록 하고 있습니다.
🔎 java.lang.Object 클래스
java.lang 패키지 중에서도 가장 많이 사용되는 클래스는 바로 Object 클래스입니다. Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 됩니다.
따라서 자바의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수 있습니다.이러한 Object 클래스는 필드를 가지지 않으며, 총 11개의 메소드만으로 구성되어 있습니다.
==
과 동일한 결과가 리턴
이런 유용한 정보를 나눠주셔서 감사합니다.