라이브러리 활용 - java.base 모듈
문자열 클래스
한모로그
2023. 1. 27. 20:14
String 클래스
- String 클래스는 문자열을 저장하고 조작할 때 사용
- 문자열 리터럴은 자동으로 String 객체로 생성. String 클래스의 다양한 생성자를 이용해서 직접 객체를 생성할 수도 있음
출처, 이것이 자바다
- 한글 1자를 UTF-8로 인코딩하면 3바이트가 되고, EUC-KR로 인코딩하면 2바이트가 됨
package ch12.sec05;
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(); //6바이트 관리
// byte[] arr1 = data.getBytes("UTF-8");
System.out.println("arr1: " + Arrays.toString(arr1));
//바이트배열(UTF-8) -> 문자열 변환. 3바이트씩 읽어와야 한다.
String str1 = new String(arr1);
// String set1 = new String(arr1, "UTF-8");
System.out.println("str1: " + str1);
byte[] arr2 = data.getBytes("EUC-KR"); //4바이트 관리
System.out.println("arr2: " + Arrays.toString(arr2));
String str2 = new String(arr2, "EUC-KR");
System.out.println("str2: " + str2);
}
}
StringBuilder 클래스
- 잦은 문자열 변경 작업을 해야 한다면 String보다는 StringBuilder가 좋음
- StringBuilder는 내부 버퍼에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 하도록 설계
출처, 이것이 자바다
출처, 이것이 자바다
package ch12.sec05;
/*
* 문자열 변경작업이 많이 발생이 되는 경우, 성능 향상을 위한다면 StringBuilder클래스를 사용한다.
*
* StringBuffer 클래스도 존재한다. 스레드와 관련되어 있다.
*/
public class StringBuilderExample {
public static void main(String[] args) {
/*
StringBuilder sb = new StringBuilder();
sb.append("DEF");
sb.append("DEF");
sb.append("DEF");
sb.append("DEF");
*/
//체이닝 방법
StringBuilder sb = new StringBuilder()
.append("DEF")
.append("DEF")
.append("DEF")
.append("DEF");
System.out.println(sb);
}
}
package ch12.sec05;
public class StringBuilderExample2 {
public static void main(String[] args) {
String data = new StringBuilder()
.append("DEF") // "DEF"
.insert(0, "ABC") // "ABCDEF"
.delete(3, 4) // "ABCEF"
.toString(); // 문자열 변환
System.out.println(data);
}
}
StringTokenizer 클래스
- 문자열에 여러 종류가 아닌 한 종류의 구분자만 있다면 StringTokenizer를 사용할 수도 있음 StringTokenizer 객체를 생성 시 첫 번째 매개값으로 전체 문자열을 주고, 두 번째 매개값으로 구분자를 줌. 구분자를 생략하면 공백이 기본 구분자가 됨
출처, 이것이 자바다
package ch12.sec05;
import java.util.StringTokenizer;
/* 구분자를 이용한 문자열 추출
* 1)String 클래스
* data1.split("구분자")
* data1.split("정규식")
* 정규식 : 문자열이 특정패턴으로 구성되어 있는지를 검색할 때 사용하는 문법.
* 2)StringTokenizer st = new StringTokenizer(data2, "/");
*/
public class StringTokenizerExample {
public static void main(String[] args) {
String data1 = "홍길동&이수홍,박연수";
String[] arr = data1.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);
}
}
}