String 클래스 메서드
length() : 문자열의 길이 반환
charAt(int index) : 특정 인덱스의 문자 반환
substring(int beginIndex, int endIndex) : 문자열의 부분 문자열 반환
indexOf(String str) : 특정 문자열이 시작되는 인덱스 반환
toLowerCase(), toUpperCase() : 문자열을 소문자 또는 대문자로 변환
trim() : 문자열 양 끝의 공백을 제거
concat(String str) : 문자열을 더함
String 클래스와 참조형
String은 클래스라 기본형이 아닌 참조형
>> 원칙적으로는 +같은 연산 사용 불가, 문자열을 더할 때는 concat()과 같은 메서드 사용
>> 하지만 문자열은 너무 자주 다루어져서 자바 언어에서 편의상 + 연산 제공
String 클래스 - 비교
String 클래스 비교할 떄는 == 비교가 아니라 항상 equals() 비교
동일성(Identity) : == 연산자를 사용해서 두 객체의 참조가 동일한 객체를 가리키고 있는지 확인
동등성(Equality) : equals() 메서드를 사용해서 두 객체가 논리적으로 같은지 확인
문자열 리터럴, 문자열 풀
자바가 실행되는 시점에 클래스에 문자열 리터럴이 있으면 문자열 풀에 String 인스턴스를 미리 만들어둠
문자열 풀 덕분에 같은 문자를 사용하는 경우
>> 메모리 사용을 줄이고 문자를 만드는 시간도 줄어들어 성능 최적화
프로그래밍에서 풀(Pool)은 공용 자원을 모아둔 곳
힙 영역 사용, 문자열 풀에서 문자를 찾을 때 해시 알고리즘 사용
>> 매우 빠른 속도로 원하는 인스턴스를 찾을 수 있음
String 클래스 - 불변 객체
문자열 풀에 있는 String 인스턴스의 값이 중간에 변경되면
>> 같은 문자열을 참고하는 다른 변수의 값도 함꼐 변경되는 사이드 이펙트 문제 발생
주요 메서드
StringBuilder - 가변 String
불변인 String 클래스의 단점
>> 문자를 더하거나 변경해야 하는 상황이면 더 많은 String 객체를 만들고 GC해야 함
>> 컴퓨터의 CPU, 메모리 자원을 더 많이 사용
String 최적화를 위해서 + 연산자가 아닌 String Builder를 직접 사용하는 것이 더 좋은 경우
>> 반복문에서 반복해서 문자를 연결할 때
>> 조건문을 통해 동적으로 문자열을 조합할 때
>> 복잡한 문자열의 특정 부분을 변경해야 할 때
>> 매우 긴 대용량 문자열을 다룰 때
StringBuilder sb = new StringBuilder(); : 객체 생성
append() : 여러 문자열 추가
insert() : 특정 위치에 문자열 삽입
delete() : 특정 범위의 문자열 삭제
reverse() : 문자열을 뒤집음
String string = sb.toString(); : StringBuilder의 결과를 기반으로 String을 생성해서 반환
'Java' 카테고리의 다른 글
Java / 열거형 - ENUM (0) | 2025.02.25 |
---|---|
Java / 래퍼, Class 클래스 (0) | 2025.02.24 |
Java / 불변 객체 (0) | 2025.02.24 |
Java / Object 클래스 (0) | 2025.02.24 |
Java / 다형성과 설계 (0) | 2025.02.23 |