JAVA

자바 JAVA 문자열 String 함수 & 사용법 총 정리

수진97 2025. 11. 23. 14:32

안녕하세요~!

이번 포스팅은 자바 문자열 함수에 대해 정리해 보겠습니다.

실무에서도 많이 사용되고, 코딩테스트에서는 특히나 빠지지 않는 게 문자열 다루기인데요.

그만큼 중요하니 필요한 함수는 꼭꼭 암기해 둡시다!!

 

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)