charAt() - 특정 인덱스 위치의 문자 반환
indexOf() / lastIndexOf() - 문자열 검색해서 위치 반혼
length() - 문자열 길이 반환
replace() - 검색된 문자열 교체
substring() - 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환
toString() - 문자열 출력
capacity() - 현재 배열 사이즈 / length()는 실제 데이터가 들어있는 문자열 자체의 길이
delete(6,9) // 6 ~ 8 번째 문자 삭제
setCharAt() - 특정 위치의 문자 변경
setLength() - 문자열 길이 조정 / 현재 문자열길이보다 길게 조정하면 나머지는 공백으로 채워짐 / 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제된다.
String 과 StringBuffer의 차이점 ?!
String은 불변 : 한번 만들어진 String은 변환이 불가능하다. str = "hello" 인 상태 였는데, str = str + "world"; 이렇게 하면 str내용을 바꾸는 것이 아니라 새로운 "hello world"라는 문자열을 가르키게 된다. hello는 heap영역의 String pool의 garbage로 남아있다가 GC(Garabage Collection)에 의해 사라지게 된다.
-문자열 추가, 수정, 삭제 등의 연산이 빈번하게 발생하는 코드에서 String 클래스를 사용하면 힙 메모리에 임시 garbage들이 생성되어 , 힙 메모리의 부족으로 어플리케이션 성능에 치명적인 영향을 끼치게 된다.
StringBuffer는 가변성을 가진다 (mutable (변환 가능))
: 가변성을 가지기 때문에 .append() , .delete() 등의 api를 이용하여 동일 객체 내에서 문자열을 변경하는 것이 가능하다.
StringBuffer vs StringBuilder
: 동기화의 유무
StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다 (thread - safe)
String도 불변성을 가지기 때문에 , thread-safe을 가지고 있다.
StringBuilder는 동기화를 지원하지 않지만, StringBuffer보다 뛰어나다.
'CS > Algorithm' 카테고리의 다른 글
백준 2164 [큐] : 카드2 - JAVA (0) | 2021.03.29 |
---|---|
백준 10845 큐 : JAVA (0) | 2021.03.28 |
JAVA : QUEUE (큐) 클래스 (0) | 2021.03.28 |
백준1158 : 요세푸스 문제 - JAVA (0) | 2021.03.28 |
백준 오류 : JAVA (0) | 2021.03.21 |