의문점 공부하기/📌 Java

📌 자바에서 문자열을 조작하는 클래스는 무엇이 있을까? 각 클래스의 차이점은?

아리빠 2023. 6. 7. 15:28
▶String 클래스:
-불변(immutable): String 인스턴스는 한 번 생성되면 변경할 수 없다. -> 문자열을 변경하려면 새로운 String 객체를 생성해야 한다
-스레드 안전하지 않음: 여러 스레드가 동시에 String 객체를 수정하려고 할 때, 동기화를 관리해야 한다.
-문자열 조작 메서드 제공: 문자열 연결, 잘라내기, 대소문자 변환 등의 작업을 수행하는 메서드를 제공

 

 

▶StringBuilder 클래스:
-가변(mutable): StringBuilder 인스턴스는 문자열을 동적으로 변경할 수 있다. 같은 객체에서 문자열을 수정하고 추가할 수 있다.
-스레드 안전하지 않음: 여러 스레드가 동시에 StringBuilder 객체를 수정하려고 할 때, 동기화를 관리해야 한다
-문자열 조작 메서드 제공: 문자열 추가, 삽입, 삭제, 대체 등의 작업을 수행하는 메서드를 제공, 성능 면에서 효율적

 

 

▶StringBuffer 클래스:
-가변(mutable): StringBuffer 인스턴스도 문자열을 동적으로 변경할 수 있다. StringBuilder와 동일한 기능을 제공하지만, 스레드 안전하도록 설계되어 있다.
-스레드 안전(thread-safe): 여러 스레드가 동시에 StringBuffer 객체를 수정할 수 있고, 동기화가 내장되어 있어 스레드 간 충돌을 방지한다.
-문자열 조작 메서드 제공: StringBuilder와 유사하게 문자열 조작 작업을 수행하는 메서드를 제공, 멀티스레드 환경에서 안전하게 사용할 수 있다.

 

 

▶StringUtils 클래스 (Apache Commons Lang 라이브러리):
-외부 라이브러리: StringUtils 클래스는 Apache Commons Lang 라이브러리에 속해 있다. 이 라이브러리는 자주 사용되는 문자열 조작 유틸리티를 제공
-다양한 문자열 조작 메서드: 문자열 자르기, 연결하기, 대소문자 변환, 문자열 비교, 공백 처리 등 다양한 문자열 조작 기능을 제공. 기능적으로 유용 + 간편한 사용성을 제공