[Java] 문자열 클래스 - String, StringBuilder, StringTokenizer

우쓰·2023년 11월 8일
0

Java

목록 보기
6/10

Content

String 클래스

String 클래스는 문자열을 조작할때 사용한다.
byte배열을 String 객체로 생성이 가능하다.

import java.util.Arrays;

public class ByteArrToString {

  public static void main(String[] args) throws Exception {
    String str = "String";
    
    // 배열로 변환
    byte[] strArr = str.getBytes();
    System.out.println("strArr = " + Arrays.toString(strArr));
    
    
    // 문자열 변환
    String str2 = new String(strArr);
    System.out.println("str2 = " + str2);
  }
}

StringBuilder 클래스

String 객체는 문자열 내부 문자열 수정이 아니라 새로운 객체를 생성한다.

public class StringBuilderEx {

  public static void main(String[] args) {
    String str = "java";
    str += "script";
  }
}

여기서 str은 javascript가 되었지만 "java"가 수정된 것이 아닌
새로운 "javascript" 라는 String객체가 생성되고
str변수가 이 객체를 참조한 것이다.

이러한 수정 작업이 잦다면 이전 객체는 계속 버려지기 때문에 효율성 측면에서 좋지 않아 StringBuilder 클래스를 사용하는 것이 좋다.

  • append(문자열) : 문자열을 끝에 추가
  • insert(위치, 문자열) : 위치에 문자열 추가
  • delete(시작 위치, 끝 위치) : 문자열 삭제
  • replace(시작 위치, 끝 위치, 문자열) : 문자열 일부 대체
  • toString() : 완성된 문자열을 리턴

StringTokenizer 클래스

구분자를 기준으로 문자열을 분리하려면
split() 메소드를 이용하면 된다.
한 종류의 구분자가 있다면 StringTokenizer를 사용한다.

import java.util.StringTokenizer;

public class StringTokenizerEx {

  public static void main(String[] args) {

    String str1 = "java&c++,python";
    String[] arr = str1.split("&|,");
    for (String s : arr) {
      System.out.println(s);
    }
    String str2 = "java,c++,python";
    StringTokenizer st = new StringTokenizer(str2, ",");
    while (st.hasMoreTokens()) {
      String token = st.nextToken();
      System.out.println("token = " + token);
    }
  }
}
  • countTokens() : 분리할 수 있는 문자열의 수
  • hasMoreTokens() : 남아 있는 문자열이 있으면 true
  • nextToken() : 다음 문자열 토큰

I Learned

  • 문자열 수정은 String 으로 하면 된다고 생각하였지만, String은 내부 문자열을 수정할 수 없고 새로운 객체를 생성하기 때문에 문자열 변경 작업이 잦다면 StringBuilder를 사용하는것이 좋다.

0개의 댓글