카테고리 없음

자바 공부#1_07. String 다루기

코딩연습중 2025. 3. 30. 16:37

자바 String 메서드

 

1. equals()

  • 목적: 문자열의 값이 같은지 비교
  • 시간복잡도: O(n) (두 문자열의 길이만큼 비교)
  • 파라미터: Object anotherString
String a = "hello"; String b = "hello"; System.out.println(a.equals(b)); // true

2. indexOf()

  • 목적: 특정 문자 또는 문자열이 처음 등장하는 인덱스 반환
  • 시간복잡도: O(n)
  • 파라미터:
    • int indexOf(int ch)
    • int indexOf(String str)
"hello".indexOf('l'); // 2 "hello".indexOf("lo"); // 3

3. contains()

  • 목적: 특정 문자열이 포함되어 있는지 확인
  • 시간복잡도: O(n)
  • 파라미터: CharSequence s
"hello".contains("el"); // true

4. charAt()

  • 목적: 특정 인덱스에 있는 문자 반환
  • 시간복잡도: O(1)
  • 파라미터: int index
"hello".charAt(1); // 'e'

5. replace()

  • 목적: 모든 대상 문자/문자열을 다른 것으로 대체
  • 시간복잡도: O(n)
  • 파라미터:
    • String replace(char oldChar, char newChar)
    • String replace(CharSequence target, CharSequence replacement)
"apple".replace("p", "b"); // "abble"

6. replaceAll()

  • 목적: 정규 표현식에 해당하는 모든 부분을 대체
  • 시간복잡도: O(n) + 정규식 파싱
  • 파라미터: String regex, String replacement
"a1b2c3".replaceAll("[0-9]", ""); // "abc"

7. replaceFirst()

  • 목적: 정규 표현식에 첫 번째로 일치하는 부분만 변경
  • 시간복잡도: O(n)
  • 파라미터: String regex, String replacement
"a1b2c3".replaceFirst("[0-9]", ""); // "ab2c3"

 

8. substring()

  • 목적: 문자열의 일부를 잘라서 새로운 문자열로 반환
  • 시간복잡도: O(k) (추출된 문자열의 길이 k에 비례)
  • 파라미터:
    • int beginIndex
    • int beginIndex, int endIndex
String str = "hello";
str.substring(1);      // "ello"
str.substring(1, 4);   // "ell"

9. toUpperCase()

  • 목적: 모든 문자를 대문자로 변환
  • 시간복잡도: O(n)
  • 파라미터: 없음
"hello".toUpperCase(); // "HELLO"

10. toLowerCase()

  • 목적: 모든 문자를 소문자로 변환
  • 시간복잡도: O(n)
  • 파라미터: 없음
"HELLO".toLowerCase(); // "hello"

11. split()

  • 목적: 정규식을 기준으로 문자열 분리 → 배열 반환
  • 시간복잡도: O(n)
  • 파라미터:
    • String regex
    • String regex, int limit
"a,b,c".split(","); // ["a", "b", "c"]

12. getBytes()

  • 목적: 문자열을 바이트 배열로 변환
  • 시간복잡도: O(n)
  • 파라미터: (옵션) String charsetName
byte[] bytes = "abc".getBytes(); // [97, 98, 99]

13. length()

  • 목적: 문자열의 길이 반환
  • 시간복잡도: O(1)
  • 파라미터: 없음
"hello".length(); // 5

14. compareTo()

  • 목적: 문자열을 사전 순으로 비교 (정렬 시 사용)
  • 시간복잡도: O(n) (공통 접두사 길이만큼)
  • 파라미터: String anotherString
"abc".compareTo("abd"); // -1 (abc < abd)

15. trim()

  • 목적: 앞뒤 공백 제거 (중간 공백은 제거하지 않음)
  • 시간복잡도: O(n)
  • 파라미터: 없음
" hello ".trim(); // "hello"

16. valueOf()

  • 목적: 기본형 값을 문자열로 변환
  • 시간복잡도: O(1) ~ O(log n)
  • 파라미터: int, boolean, char, long, double, Object 등
String str = String.valueOf(123); // "123"

17. toCharArray()

  • 목적: 문자열을 문자 배열로 변환
  • 시간복잡도: O(n)
  • 파라미터: 없음
char[] chars = "abc".toCharArray(); // ['a', 'b', 'c']

18. concat()

  • 목적: 문자열을 이어 붙임 (+와 유사)
  • 시간복잡도: O(n + m) (기존 문자열 + 추가 문자열 길이)
  • 파라미터: String str
"Hello".concat(" World"); // "Hello World"

19. format()

  • 목적: 포맷 문자열 생성 (서식 기반 문자열)
  • 시간복잡도: O(n) + 포맷 파싱 비용
  • 파라미터: String format, Object... args
String result = String.format("이름: %s, 나이: %d", "홍길동", 25); // "이름: 홍길동, 나이: 25"

 

 

문자열 포매팅

 

String.format()

  • 목적: C 언어 스타일의 서식을 사용하여 문자열을 조립
  • 시간복잡도: O(n) + 포맷 파싱 비용
  • 파라미터: String format, Object... args
String name = "홍길동"; 
int age = 25; String result = String.format("이름: %s, 나이: %d", name, age); 
System.out.println(result); // "이름: 홍길동, 나이: 25"

System.out.printf()

  • 목적: 포맷팅된 문자열을 콘솔에 바로 출력
  • 반환값 없음 (void)
System.out.printf("원주율은 %.2f입니다.\n", 3.14159); // 출력: 원주율은 3.14입니다.

 

정렬, 너비, 패딩

System.out.printf("|%10s|\n", "hi");    // 오른쪽 정렬: |        hi|
System.out.printf("|%-10s|\n", "hi");   // 왼쪽 정렬: |hi        |
System.out.printf("|%05d|\n", 7);       // 0으로 패딩: |00007|