기초 문법
- ‘A’의 아스키코드 값 65, ‘a’의 아스키코드 값 97
- 문자열의 제거, 순서 바꾸기(문자열의 형태를 바꾸는 유형) 등은 str.substing()을 이용하면 된다.
길이 | 문자열 : length() 배열 : length 리스트 : size() |
모든 문자열을 대문자로 바꾸기 | str.toUpperCase() |
문자열 부분 추출 | str.substring(startIndex, endIndex) |
문자열 대체하기 | str.replace("abc", "def") // abc를 def로 바꾼다. |
같은지 비교하기 | 문자열 : str1.equals(str2) // str1과 str2가 같은지 검사 문자 : char1 == char2 // char1과 char2가 같은지 검사 |
문자열에서 특정 인덱스의 값 가져오기 Ex. String str = “abcde” 에서 str[2]는 str.charAt(2); |
str.charAt(2); // str[2] 추출 (문자로 추출됨) |
문자열에서 특정 문자열 찾기 | str.contains("ab") // str에 “ab”가 있으면 true 반환 |
문자열에서 특정 문자열이 있는 인덱스 찾기 | str.indexOf("ab") // str에 “ab”가 있으면 인덱스 반환 (없으면 -1 반환) Ex) String s = "appleabanana"; System.out.println(s.indexOf("ab")); // 5 출력 |
아스키코드를 이용하여 char ↔ int 변환 | char c = (char) 65 // ‘A’ int c = (int) ‘A’ // 65 |
문자열 → 정수 | Integer.parseInt() 사용 Ex) String s = “12538”; int ans = Integer.parseInt(s); |
정수 → 문자열 | Integer.toString() 사용 |
사전순으로 앞선 문자 확인 | str1.compareTo(str2) 사용 0 : str1과 str2는 같음 0보다 작음 : str1이 사전 순으로 앞선다. 0보다 큼 : str2가 사전 순으로 앞선다. |
StringBuffer/StringBuilder 클래스
- String 클래스는 인스턴스를 생성할 때 문자열을 변경할 수 없음.
- StringBuffer/StringBuilder 클래스는 문자열 변경이 가능.
- 문자열 뒤집기의 경우 for문으로 일일이 하는 것보다 StringBuilder 클래스의 reverse() 메서드를 사용하는 것이 더 성능이 좋음.
- 문자열 수정 시 성능(속도) String <<<< StringBuffer < StringBuilder
- 결론 : 문자열 알고리즘 풀 때는 StringBuilder 클래스 사용
.append() | 문자열 뒤에 덧붙이기 ( 문자열의 + 연산과 유사 ) |
.delete(int start, int end) | 시작위치(start) ~ 끝 위치(end) 사이에 있는 문자를 제거 (끝 위치의 문자는 제외) |
.deleteCharAt(int index) | 지정된 위치(index)의 문자를 제거 |
.insert(int pos, String str) | str 으로 받은 값을 지정된 위치(pos)에 추가한다. |
.replace(int start, int end, String str) | 지정된 범위(start~end)의 문자들을 주어진 문자열(str)로 바꾼다. (끝 위치의 문자는 제외) |
.reverse() | 문자열의 순서를 거꾸로 나열한다. |
String word = "abcd";
StringBuilder sb = new StringBuilder(word); // word 라는 문자열을 StringBuilder 형으로 변경하여 sb 객체에 담는다.
word = sb.reverse().toString(); // 문자열을 뒤집고 다시 String 형으로 변경하여 word에 삽입
문제 유형
오답노트