String클래스
StringTokenizer
String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스로 생성시 전달 받은 문자열을 구분자로 나누어 각 토큰에 저장
String str = "java,Oracle,JDBC,HTML,CSS,Spring";
// 방법1. split() 이용하여 , 구분자 단위로 문자열 분리하기
String[] stArr = str.split(",");
System.out.println("분리 후 문자열의 갯수 : " + stArr.length); // 분리 후 문자열의 갯수 : 6
for(String s : stArr){
System.out.print(s + " "); //Java Oracle JDBC HTML CSS Spring;
}
// 방법2. StringTokenizer 이용하여 , 구분자 단위로 문자열 분리하기
// StringTokenizer st = new StringTokenier(문자열, 구분할 문자);
StringTokenizer st = new StringTokenizer(str, ",");
// 토큰으로 문자열 구분하고
Sysout.out.println("분리 된 문자열의 갯수 : " + st.countTokens()); // 분리 된 문자열의 갯수 : 6
// 저장된 토큰 하나씩 꺼내기
// 보통 whlie 문으로 많이사용한다.
// hasMoreTokens() => 토큰이 남아있는지 확인 반환타입 : boolean
// nextToken() => 토큰 가져오기 반환타입 String
while(st.hasMoreTokens()){
System.our.println(st.nextToken());
// 토큰 하나씩 가져올때마다 st변수에 저장되어있는토큰은 삭제된다.
// 한마디로 일회용 인거같다.
}
// 방법3. StringTokenizer 이용하여 공백 단위 문자열 분리하기
String str3 = "가 나 다 라 마 바 사 아";
// 공백 단위는 두가지 방법이존재한다.
// 구분할 문자에 아무것도 적지않으면 기본값이 공백이기에 공백처리가된다.
StringTokenizer st1 = new StringTokenizer(str3, " ");
// StringTokenizer st1 = new StringTokenizer(str3); <<< 이런식으로 작성하면 공백으로 인식한다.
while(st1.hasMoreTokens()){
System.out.print(st1.nextToken() + " ");
// 출력
// 가 나 다 라 마 바 사 아
}
// 방법4. StringTokenizer 이용하여 여러개의 구분 단위 이용하여 문자열 분리하기
String str4 = "가@나!다@라$마%바";
// 구분하고싶은것들 전부다적으면된다.. 간단.
StringTokenizer st2 = new StringTokenizer(str4,"@!$%");
while(st2.hasMoreTokens()){
System.out.print(st2.nextToken());
// 출력
// 가나다라마바
}
// 방법4 번외1. split 으로 정규표현식으로 문자열 분리하기
String str4 = "가@나!다@라$마%바";
// 이번엔 split() 이용하여 문자열 구분하기
// 정규표현식은 [내용] << 대괄호 안에 적으면된느것이다.
// split() 반환값이 String[] 이다.
String[] strArr2 = str4.split("[@!$%]");
for(String s : strArr2){
System.out.print(s);
}
// 개인적으로 split을 더 많이사용할것같다 ..
// 방법5. StringTokenizer 문자열 분리를 구분자 까지 같이 출력하기
String str5 = "자,바,어,렵,다";
// StringTokenizer st = new StringTokenizer(생성할 문자열,"구분자",false); << 마지막 매개변수는 기본값이 false
// 저의미는 구획문자를 토큰으로 같이 받아 저장하겠는가를 적어주는 매개변수이다.
// true적으면 구분자도 토큰으로 간주
StringTokenizer st = new StringTokenizer(str5,",",true);
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
// 출력
// 자
// ,
// 바
// ,
// 어
// ,
// 렵
// ,
// 다
}
StringBuilder, StringBuffer
두 클래스는 기능 이 모든것이 같다 .
하지만 차이점은 동기가 되느냐 안되느냐이다.
아직 쓰레드를 배우지않아서 이해하기는 힘들다 ...
동기화 처리가 되어야한다 > StringBuffer()
동기화 처리 불필요하다 > StringBuilder();
동기화 없이 사용할것이기때문에 지금은 StringBuilder() 사용한다.
String > 불변
계속 값을 변경하는 경우 가비지컬렉터가 참조 되지 않은 문자열을 지워줘야하는 단점
StringBuilder, StringBuffer
변경과 저장을 위한 메모리 공간
String 클래스와 다르게 변경할때 한가지의 주소의값으로만 작업하기 때문에 작업속도 향상
StringBulider sb = new StringBulider("자바 잘하자!");
// 출력 방법
System.out.println(sb.toString()); //toString 메소드 활용
System.out.println(sb.length()); //length() 길이 참조
// 문자열 추가하기
sb.append("너나 잘해!");
System.out.println(sb.toString()); //출력 : 자바 잘하자!너나 잘해!
// 문자열 삭제
// delete(int start, int end); << end는 포함하지않고 전 문자열까지만 삭제
sb.delete(3,7); //잘하자! 삭제
System.out.println(sb.toString()); // 출력 : 자바 너나 잘해!
// 문자열 중간 삽입
// insert(int offset, String str); // (삽입할 인덱스, 문자열)
System.our.println(sb.insert(3, "잘하자!"); // 출력 : 자바 잘하자!너나 잘해!
// 문자열 뒤집기
// reverse()
// sb.reverse();
System.our.println(sb.toString()); // 출력 : !해잘 나너!자하잘 바자
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA - 예외처리 (0) | 2021.06.03 |
---|---|
JAVA - DATE, Calendar, (0) | 2021.06.02 |
JAVA - 객체(toString(), equals(), hashCode()) (0) | 2021.05.27 |
JAVA - 상속 (0) | 2021.05.26 |
JAVA - 객체 배열 (0) | 2021.05.25 |