안녕하세요~!
이번 포스팅은 자바 문자열 함수에 대해 정리해 보겠습니다.
실무에서도 많이 사용되고, 코딩테스트에서는 특히나 빠지지 않는 게 문자열 다루기인데요.
그만큼 중요하니 필요한 함수는 꼭꼭 암기해 둡시다!!

1. 문자열 선언과 생성
- 리터럴("문자열") 방식은 문자열 풀(String Pool)에 저장되어 재사용
- new String("문자열")은 Heap 영역에 새로운 객체를 생성.
- 내용이 같은 문자열 리터럴의 경우, 더 이상 새로운 String 객체를 생성하지 않고, 기존 리터럴 공유
- 따라서 아래 s1과 s2는 동일한 String 객체를 가리킴
- 리터럴을 공유한 인스턴스의 저장 주소값은 동일
- new String("문자열")을 통해 생성한 두 문자열의 경우, 내용이 같아도 두 객체는 서로 다른 객체
* == , != 연산자는 두 문자열의 내용을 비교하는 것이 아니라 동일 객체인지 검사(참조 주소 비교)
* 동일 내용 검사는 .equals()

2. 문자열 함수
1) 문자열 비교 메서드
문자열의 내용(값)을 비교할 때, equals() 혹은 compareTo() 메서드 사용
- int compareTo(String s)
문자열을 사전 순으로 비교해 정수 값 반환 (같으면 0 / 앞 문자열이 더 빠르면 음수 / 앞 문자열이 더 느리면 양수)
대소문자 차이 32 (유니코드값 소문자 a(97)과 대문자 A(65) 기준)
- boolean equals(String s)
주어진 문자열 s와 현재 문자열 내용 비교 후 true / false 반환

- int compareToIgnoreCase(String s)
대, 소문자 무시하고 문자열 사전 순 비교
- boolean equalsIgnoreCase(String s)
주어진 문자열 s와 현재 문자열을 대, 소문자 구분 없이 비교한 후 true / false 리턴
2) 문자열 조작 메서드
- char charAt(int index)
index가 지정한 문자 char 반환
- int indexOf(String s)
문자열 s가 처음 등장하는 위치(인덱스)를 반환
-String concat(String s)
주어진 문자열 s를 현재 문자열 뒤에 연결
- String repeat(int c)
c번 반복한 문자열 반환 (JAVA 11 ~)
- int length()
문자열 길이(문자 개수) 반환
- boolean isBlank()
길이가 0("") 혹은 공백(" ") 있으면 true 반환 (JAVA 11~)
- boolean isEmpty()
문자열이 비어있는지 확인. 길이가 0 ("") 이면 true 반환

- String toLowerCase()
모두 소문자로 변환
- String toUpperCase()
모두 대문자로 변환
- boolean startsWith(String s)
시작하는 문자열이 s인지 true/false 반환
- boolean endsWith(String s)
끝나는 문자열이 s인지 true/false 반환
- String trim()
앞뒤에 있는 공백 제거한 후 반환
- boolean contains(String s)
주어진 문자열 s를 포함하는지 true/false 리턴
- String substring(int beginIndex)
beginIndex부터 문자열 끝까지 모두 반환
- String substring(int beginIndex, int endIndex)
beginIndex 부터 (endIndex - 1) 까지 반환(endIndex 미포함 주의)

3) String 클래스에서 제공하는 정적 메서드
1) String format()
- 주어진 포맷에 맞춘 문자열 반환
- %s(문자열), %d(정수), %f(실수).. 등
2) String join()
- 주어진 구분자로 연결한 문자열을 반환 (JAVA 8~)
- 여러 문자열을 구분자와 함께 하나로 연결할 때 사용
=> 첫 번째 매개변수로 구분자 지정, 그 뒤에 매개변수는 지정한 구분자로 연결할 문자열 나열
3) String valueOf()
- 각종 기초 타입이나 객체를 문자열로 반환

4) concat() VS StringBuilder() 차이?
String.concat() → concat() 할 때마다 새로운 String 객체 생성
StringBuilder.append() → 기존 버퍼에 이어 붙임 (새 객체 생성 X)
* 시간복잡도 차이
반복 연결에서는 StringBuilder가 압도적으로 빠름 : O(n)
concat은 1~2회 연결 시에는 상관없지만, 반복 시 최악 : O(n^2)
'JAVA' 카테고리의 다른 글
| 자바 JAVA 클래스(class) 선언과 객체 생성 (0) | 2025.11.23 |
|---|---|
| 자바 JAVA 열거 타입 (enum) (0) | 2025.11.23 |
| 자바 JAVA 연산자와 자동 형변환 & 오버플로우 / 언더플로우 (1) | 2025.11.23 |
| 자바 JAVA 변수의 타입 정리 (int, long, double, String 등) + 스택과 힙 메모리 (0) | 2025.11.20 |
| 해시(Hash) 란? (2) | 2024.11.18 |