컴퓨터 관련/JAVA 강의

java #20 꼭 알아야 할 클래스와 메소드-1- (문자열 관련)

승명 2016. 12. 18. 19:52

java #20 꼭 알아야 할 클래스와 메소드-1- (문자열 관련)

 

* 문자열 관련 클래스와 메소드

- String, StringBuffer, StringBuilder, StringTokenizer

클래스
메소드
속도특성예제
String느림짧은 문자열("...")

※ String 클래스의 설명은 이곳에서 참고하세요..

StringBuffer중간- 긴 문자열("..." + "...") 
- multi thread에서 동기화 처리
- 메모리에 문자열을 저장하고 직접 참조하여 사용

* 생성
StringBuffer sb = new StringBuffer();로 객체화 후 메소드 사용
sb.append(값)

- 값붙이기
1
2
3
sb.append("안녕");
sb.append("하세요")
.append(27).append("일"); (메소드 체인)
cs

2

7

0

1

2

3

4

5

6

7

sb.insert(인덱스, 값)

- 삽입
1
sb.insert(5"오늘은");
cs

2

7

0

1

2

3

4

5

6

7

8

9

10

sb.delete(시작인덱스, 끝인덱스)

- 삭제
StringBuilder빠름- 긴 문자열("..." + "...") 
- JDK1.5에서 제공 
- multi thread에서 동기화 처리가 안되어 있어서 속도가 빠르다.
- 메소드를 호출하여 일을 하면 원본 문자열을 변경한다.

* 사용법은 StringBuffer와 동일
StringTokenizer
- 문자열을 자르기
- java.util 에서 제공(import)

1
2
3
String s="안양시의 자랑 김안수 용인시의 수치 윤용수 *^^*";
StringTokenizer stk=new StringTokenizer(s); 
// 공백(white space)으로 문자열 구분 7개의 토큰 생성.
cs


1
2
3
4
// "수"를 기준으로 문자열 구분
StringTokenizer stk=new StringTokenizer(s, "수"); 
// 3개의 토큰, "수"는 삭제됨.
"안양시의 자랑 김안"" 용인시의 ""치 윤용" 
cs


1
2
3
4
// "수"를 삭제하지 않음.
StringTokenizer stk=new StringTokenizer(s, "수"true); 
// 10개의 토큰 생성.(띄어쓰기 포함)
"안양시의 자랑 김안""수"" 용인시의 ""수""치 윤용" 
cs
countTokens()

토큰의 갯수
1
int a = stk.countToken();
cs
hasMoreTokens()

포인터 뒤에 다음 토큰이 있는지 
1
boolean a = stk.hasMoreTokens();
cs
nextToken()

포인터가 있는 위치에 토큰을 가져오고
다음으로 포인터를 넘길때
1
2
3
while(stk.hasMoreTokens()){ 
    syso(stk.nextToken());
}
cs

안양시
자랑
김안수
용인시의
수치
윤용수
*^^*

* 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package day0227;
 
/**
* 긴 문자열을 다룰 때 사용하는 클래스
* @author SiSt
*/
public class UseStringBuffer {
     public void useStringBuffer() {
          // 1. 생성
          StringBuffer sb = new StringBuffer();
 
          // 2. 값 덧붙임
          sb.append("안녕하세요 ");
          sb.append("오늘은").append(2).append("월 입니다.");
          // 안녕하세요 오늘은2월 입니다.
          // 12345 678910 111213
          // 3. 값 원하는 위치(index)에 삽입.
          sb.insert(6"안양시의 자랑 김안수!!!");
          // 안녕하세요 안양시의 자랑 김안수
          // 01234 5 6789 10 1112 13 141516
          // 4. 삭제
          sb.delete(1113);
 
          // 거꾸로만들기
          sb.reverse();
          System.out.println(sb);
     }// UseStringBuffer
 
     public void useStringBuilder() {
          // 1. 생성
          StringBuilder sb = new StringBuilder();
 
          // 2. 값 덧붙임
          sb.append("안녕하세요 ");
          sb.append("오늘은").append(2).append("월 입니다.");
          // 안녕하세요 오늘은2월 입니다.
          // 12345 678910 111213
          // 3. 값 원하는 위치(index)에 삽입.
          sb.insert(6"안양시의 자랑 김안수!!!");
          // 안녕하세요 안양시의 자랑 김안수
          // 01234 5 6789 10 1112 13 141516
          // 4. 삭제
          sb.delete(1113);
 
          // 거꾸로만들기
          sb.reverse();
          System.out.println(sb);
     }// UseStringBuilder
 
     public static void main(String[] args) {
          UseStringBuffer usb = new UseStringBuffer();
          usb.useStringBuilder();
          System.out.println("===========");
     }
}
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package day0227;
 
import java.util.StringTokenizer;
 
/**
* 문자열을 토큰으로 구분하여 분리하는 일을 하는 클래스 StringTokenizer의 사용
*
* @author SiSt
*/
public class UseStringTokenizer {
     public UseStringTokenizer() {
          //, 로 구분된 데이터를 CSV 데이터라고 한다.
          // Comma Separator Value
          String msg="김안수, 윤용수, 김미수, 강윤수. 정현자, 이광기";
         
          //공백으로 구분하는 생성자 사용
          //StringTokenizer stk=new StringTokenizer(msg);
         
          //특정 문자로 구분하는 생성자 사용( or 기능)
          //StringTokenizer stk=new StringTokenizer(msg, ",. 윤");
         
          //특정문자로 구분하되 구분된 문자(띄어쓰기 포함)를 토큰으로 
          //취급할것인지 결정하는 생성자, true-토큰으로 구분, false-버림
          StringTokenizer stk=new StringTokenizer(msg, ",. 윤"true);
          System.out.println("토큰의 갯수 : "+stk.countTokens());
         
          while(stk.hasMoreElements()){ //토큰 존재 여부
          System.out.println(stk.nextToken()); //값을 가져오고 포인터를 다음으로 이동
    
          }//end while
         
     }// UseStringTokenizer
     public static void main(String[] args) {
          new UseStringTokenizer();
     }// main
}// class