본문 바로가기
WEB/Back-end

String, StringBuilder, StringTokenizer (Java)

by 최새벽 2024. 7. 18.

문자열 클래스

String

  • 문자열 빈칸 , null, 공백 비교하기
// 빈칸 null 공백 비교하기 
// a와 b와 c 모두 다름 
String a = ""; 
String b = null; 
String c = " ";
  • 문자열 인코딩과 디코딩(UTF-8, EUC-KR) → 잘 안씀
// byte 배열 <-> 문자열 (기본은 UTF-8) String data = "문자열";
byte\[\] arr1 = data.getBytes(); // UTF-8 인코딩  
String str = new String(byte\[\] bytes); // byte배열 -> String: UTF-8 디코딩

byte\[\] arr2 = data.getBytes(); // EUC-KR 인코딩  
String str2 = new String(byte\[\] bytes, "EUC-KR"); // byte배열 -> String: EUC-KR 디코딩
  • 문자열 인코딩과 디코딩: data를 주고 받을 때 인코딩 디코딩을 해야 한글 등의 문자가 깨질 위험을 예방할 수 있음.
    • 요즘 브라우저에서는 자동으로 해주는 경우가 많음.
    • public static void main(String[] args) throws Exception { String text = "한글"; String text2 = URLEncoder.encode("한글", "UTF-8"); System.out.println(text2); String text3 = URLDecoder.decode(text2, "UTF-8"); System.out.println(text3); }
  • 출력
%ED%95%9C%EA%B8%80
한글
  • 주석: 메서드 위에 적어두면, 이후 메서드 사용할 때 설명 표시되게 할 수 있음
/**
*   로그인 처리
*   메서드에 대한 설명
*   @param id 아이디
*   @patam pwd 비밀번호
*   @return 로그인 성공 여부
*/

StringBuilder

  • 잦은 문자열 변경 작업을 해야한다면 String보다 StringBuilder가 좋음.
  • StringBuilder: 내부 버퍼에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 하도록 설계
    • append(기본값 | 문자열) : 문자열을 끝에 추가
    • insert(위치, 기본값 | 문자열) : 문자열을 지정 위치에 추가
    • delete(시작 위치, 끝 위치) : 문자열 일부를 삭제
    • replace(시작위치, 끝위치, 문자열) : 문자열 일부를 대체
    • toString() : 완성된 문자열을 리턴
  • 메서드 리턴타입이 StringBuilder이므로 위에서 toString을 제외하고 메서드 체이닝 패턴을 사용할 수 있음.
  • StringBuffer와 비슷
    String data = new StringBuilder() 
                    .append("ABC") 
                    .toString(); 
                    // == data.append("ABC"); 
                    // data.toString();

StringTokenizer

  • 하나의 구분자만 있는 경우 split을 대신하여 사용할 수 있음
  • split은 .split("&|,|-"); 와 같은 식으로 여러 개 구분자 사용 가능
  • .countTokens() : token이 몇 개 있는지
  • .hasMoreTokens() : token이 더 이상 있는지 확인
  • .nextToken() : 다음 token으로 이동