1. String
▷ 문자열을 저장하고 조작할 때 사용합니다.
▷ 문자열 리터럴은 자동으로 String 객체로 생성합니다.
String 클래스의 다양한 생성자를 이용해서 직접 객체를 생성할 수도 있습니다.
▷ 한글 1자를 UTF-8로 인코딩하면 3바이트가 되고, EUC-KR로 인코딩하면 2바이트가 됩니다.
import java.util.Arrays; public class BytesToStringExample { public static void main(String[] args) throws Exception{ String data = "자바"; // String → byte 배열 (기본 : UTF-8 인코딩) byte[] arr1 = data.getBytes(); // byte[] arr1 = data.getBytes("UTF-8"); System.out.println("arr1 : " + Arrays.toString(arr1)); // byte → String (기본 : UTF-8 디코딩) String str1 = new String(arr1); // String str1 = new String(arr1, "UTF-8"); System.out.println("str1 : " + str1); // String → byte 배열 (EUC-KR 인코딩) byte[] arr2 = data.getBytes("EUC-KR"); System.out.println("arr2 : " + Arrays.toString(arr2)); // byte 배열 → String (기본 : UTF-8 디코딩) String str2 = new String(arr2, "EUC-KR"); // String str1 = new String(arr1, "UTF-8"); System.out.println("str2 : " + str2); } } // 출력 : // arr1 : [-20, -98, -112, -21, -80, -108] // str1 : 자바 // arr2 : [-64, -38, -71, -39] // str2 : 자바
2. StringBuilder
▷ 효율적인 문자열 조작 기능이 필요할 때 사용합니다.
▷ 잦은 문자열 변경 작업을 해야한다면 String보다는 StringBuilder가 좋습니다.
▷ StringBuilder는 내부 버퍼에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 하도록 설계합니다.
NO | 리턴 타입 | 메소드(매개변수) | 설명 |
1 | StringBuilder | append(기본값 | 문자열) | 문자열을 끝에 추가 |
2 | insert(위치, 기본값 | 문자열) | 문자열을 지정 위치에 추가 | |
3 | delete(시작위치, 끝 위치) | 문자열 일부를 삭제 | |
4 | replace(시작위치, 끝 위치, 문자열) | 문자열 일부를 대체 | |
5 | String | toString | 완성된 문자열을 리턴 |
public class StringBuilderExample { public static void main(String[] args) { String data = new StringBuilder() .append("DEF") .insert(0, "ABC") .delete(3, 4) .toString(); System.out.println(data); } } // 출력 : // ABCEF
3. StringTokenizer
▷ 구분자로 연결된 문자열을 분리할 때 사용합니다.
▷ 문자열에 여러 종류가 아닌 한 종류의 구분자만 있다면 StringTokenizer를 사용할 수 있습니다.
▷ StringTokenizer 객체를 생성시 첫 번째 매개값으로 전체 문자열을 주고, 두 번째 매개값으로 구분자를 줍니다.
▷ 구분자를 생략하면 공백이 기본 구분자가 됩니다.
▷ String에서 split() 메소드 : 구분자 여러 종류가 혼제
▷ StringTokenizer 클래스 : 구분자가 하나의 종류만 있는 경우
1. split으로 여러개의 구분자를 사용할 때
▷ String data = "홍길동 & 이수홍, 박연수, 김자바 - 최명호";
▷ String[] names = data.split("&|,|-")
2. 하나의 구분자만 사용할 때
▷ StringTokenizer st = new StringTokenizer(data, "/");
NO | 리턴 타입 | 메소드(매개변수) | 설명 |
1 | int | countTokens() | 분리할 수 있는 문자열의 총 수 |
2 | boolean | hasMoreTokens() | 남아 있는 문자열이 있는지 여부 |
3 | String | nextToken() | 문자열을 하나씩 가져옴 |
◎ StringTokenizer 예제
import java.util.StringTokenizer; public class StringTokenizerExample { public static void main(String[] args) { String data1 = "홍길동&이수홍,박연수"; // 구분자가 여러 종류일 경우 String[] arr = data1.split("&|,"); // split을 이용해 배열에 문자를 저장합니다. for(String token : arr) { System.out.println(token); // 문자열을 하나씩 가져옴 } System.out.println(); String data2 = "홍길동/이수홍/박연수"; // 구분자가 하나의 종류일 경우 StringTokenizer st = new StringTokenizer(data2, "/"); while(st.hasMoreTokens()) { // 남아 있는 문자열이 있는지 확인 String token = st.nextToken(); // 문자열을 하나씩 가져옴 System.out.println(token); } } } // 출력 : // 홍길동 // 이수홍 // 박연수 // // 홍길동 // 이수홍 // 박연수
String 클래스들은 기존에 사용하던 split 등의 함수들과 같은 기능을 가지고 있습니다!
제가 원하는 때에 따라서 사용할 수 있는 범위가 달라질 수 있겠어요!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[java] 이것이 자바다 ch12 수학(Math) 클래스 (0) | 2023.01.19 |
---|---|
[java] 이것이 자바다 ch12 포장 클래스 (0) | 2023.01.19 |
[java] 이것이 자바다 ch12 System 클래스 (0) | 2023.01.19 |
[java] 이것이 자바다 ch12 java.base 모듈(Object 클래스) (0) | 2023.01.19 |
[java] ch11 예외 처리 3 (0) | 2023.01.19 |