WEB/Back-end
String, StringBuilder, StringTokenizer (Java)
by 최새벽
2024. 7. 18.
문자열 클래스
String
// 빈칸 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으로 이동