본문 바로가기
Java

문자열

by hseong 2023. 4. 20.

StringBuilder

더하기 연산을 통해 새로운 문자열을 만들면 문자의 배열을 복사하면서, 새로운 문자열 객체가 생성된다.

길이가 N인 새로운 문자열을 만드는데 O(N)이 소요된다.

StringBuilder는 새로운 문자열을 만들지 않고 내부 배열에서 직접 수정한다. 문자열의 길이가 너무 길어지면 배열 크기를 늘려주기 때문에 O(N)의 시간 복잡도를 가지나 이는 가끔 일어나는 작업이기 때문에 기대 시간 복잡도는 O(1)이 된다.

메서드 역할 시간 복잡도
StringBuilder.toString() 구성한 문자열을 String 형식으로 반환한다. O(N)
StringBuilder.append(char c) 문자 c를 문자열 끝에 이어 붙인다. O(1)
StringBuilder.length() 구성한 문자열 길이를 반환한다. O(1)
StringBuilder.reverse() 구성한 문자열을 뒤집는다. O(N)

 

String

메서드 return type 내용
equals(String other) boolean 문자열이 other와 같은 문자열을 담고 있는지 반환
length() int 문자열 길이를 반환
substring(int beingIndex, int endIndex) String 문자열의 beginIndex부터 endIndex까지 잘라서 반환
toUpperCase() String 모든 알파벳이 대문자로 변환된 문자열을 반환
toLowerCase() String 모든 알파벳이 소문자로 변환된 문자열을 반환
포함 여부 검사    
contains(CharSequence s) boolean 문자열 s가 원본 문자열에 있는지 검사
startsWith(String prefix) boolean 원본 문자열이 전달받은 문자열로 시작하는지 검사
endsWith(String suffix) boolean 원본 문자열이 전달받은 문자열로 끝나는지 검사
indexOf(String str) int 전달받은 문자열이 원본 문자열의 몇번째 인덱스에 있는지 검사
치환    
replace(char oldChar, char newChar) String 원본 문자열의 oldChar 문자들을 newChar 문자로 치환한 문자열을 반환
replace(charSequence target, CharSequence replacement) String 원본 문자열의 target 문자열을 replacement 문자열로 치환해서 반환

 

진법

메서드 return type 내용
Integer.parseInt(String s, int radix) int radix 진법으로 숫자를 표현하는 문자열 s를 정수로 변환
Integer.toString(int v, int radix) String 정수 v를 raidx 진법의 문자열로 변환
Long.parseLong(String s, int radix) long radix 진법으로 숫자를 표현하는 문자열 s를 정수로 변환
Long.toString(long v, int radix) String 정수 v를 radix 진법의 문자열로 변환

 

정규표현식

정규표현식 내용
. 개행 문자를 제외한 아무 문자
[abc] a, b, c 중 아무거나
[^abc] a, b, c를 제외한 문자
[a-z] a에서 z 사이의 문자
a* a 0개 이상
a+ a 1개 이상
a? a 0개 또는 1개
a{5} a 5개
a{2,} a 2개 이상
a{2,4} a 2개 이상, 4개 이하
a|b a 또는 b
^a 문자열 처음 문자가 a
a$ 문자열 마지막 문자가 a
\ 이스케이프
메서드 return type 내용
replaceAll(String regex, String replacement) String 전달받은 정규표현식에 매칭되는 패턴을 모두 replacement로 치환
matches(String regex) boolean 문자열이 전달받은 정규표현식에 매칭되는지 여부를 반환
split(String regex) String[] 전달받은 정규표현식에 매칭되는 패턴을 기준으로 원본 문자열을 잘라서 반환

정규표현식에서 제대로 된 백스페이스를 넣어주려면 백스페이스를 두 번 넣어주어야 한다.

'Java' 카테고리의 다른 글

Java의 데이터 입출력 스트림  (0) 2024.04.24
[오브젝트] 객체지향 프로그래밍  (0) 2023.07.26
함수형 인터페이스와 람다 표현식  (0) 2023.06.18