JAVA - String 클래스

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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유