1. StringBuffer 클래스
# 문자열 버퍼링을 제공하는 클래스
1) String 클래스를 남용하게되면 JVM 메모리에 문제가 발생한다.
즉, String 클래스를 대신하고 메모리 사용을 줄이기 위해 StringBuffer 클래스를 사용하는 것이다.
2) String 클래스의 문자열은 변경이 불가능하지만 StringBuffer 클래스의 문자열은 변경이 가능하다.
클래스 내부에 메모리 공간을 조절할 수 있는 버퍼가 있기 때문에 추가, 삭제, 삽입같은 다양한 처리가 가능하다.
3) StringBuffer 클래스는 Thread-safe한 구조이기 때문에, 여러 개의 작업이 동시에 실행되는 상황에서도
본래의 데이터의 무결성이 깨지지 않는다는 장점이 있다.
4) StringBuffer 클래스의 메소드들은 실행한 후 새로운 StringBuffer 객체가 반환되는 것이 아니라, 메소드의 객체 자신이 다시 반환된다.
5) 사용하는 방법
6) StringBuffer 클래스의 메소드들
메소드 이름
| 선언부와 설명
|
append |
# 선언부: public StringBuffer append(boolean b) public StringBuffer append(double d) public StringBuffer append(String str) public StringBuffer append(StringBuffer sb) (이외에도 오버로딩된 메소드들이 존재하며 이는 API 문서를 참고하기 바란다. 이 메소드 또한 오버로딩의 대표적인 예다.) # 설명: StringBuffer 객체에 매개변수의 값을 추가한다. 단 String형이 아닌 매개변수들은 내부적으로 String.valueOf() 메소드에 의해서 변환된 형태로 추가된다. |
delete
|
# 선언부: public StringBuffer delete(int start, int end) # 설명: 매개변수 start 위치부터 end 위치에 있는 문자를 모두 삭제한다. start와 end 매개변수는 index값을 의미한다. 그래서 가장 처음에 위치한 문자의 index값은 0이며 그 다음부터 위치한 문자의 index는 1씩 증가한다. |
deleteCharAt | # 선언부: public StringBuffer deleteCharAt(int index) # 설명: StringBuffer 객체의 문자열에서 index 위치에 있는 문자 하나를 삭제한다. delete() 메소드와 다르게 character 하나만 삭제한다. |
indexOf |
# 선언부: public int indexOf(String str) public int indexOf(String str, int fromIndex) # 설명: indexOf() 메소드는 StringBuffer 객체의 문자열에서 찾고자 하는 문자열의 index 위치를 알아내는 역할을 한다. 매개변수 str 하나만 받는 메소드는 대상 문자열의 맨처음부터 검색하고, 매개변수 str과 fromIndex를 사용하는 메소드는 대상 문자열의 fromIndex부터 검색한다. |
lastIndexOf |
# 선언부: public int lastIndexOf(String str) public int lastIndexOf(String str, int fromIndex) # 설명: lastIndexOf() 메소드는 indexOf() 메소드와 마찬가지로 StringBuffer 문자열에서 찾고자 하는 문자열의 index 위치를 알아낸다. indexOf() 메소드는 앞에서부터 검색하지만 lastIndexOf() 메소드는 뒤에서부터 대상 문자열의 위치를 검색한다. |
insert |
# 선언부: public StringBuffer insert(int offset, String str) (이외에도 오버로딩된 메소드들이 존재하며, 이는 API 문서를 참고하기 바란다.) # 설명: StringBuffer 객체의 문자열에 새로운 문자를 끼워 넣는 역할을 한다. 매개변수 str은 새로 넣을 문자열을 의미하며 매개변수 offset은 문자를 끼워 넣을 위치를 index값으로 표현한다. |
replace |
# 선언부: public StringBuffer replace(int start, int end, String str) # 설명: StringBuffer 객체의 문자열을 새로운 문자열로 치환한다. 치환 대상 문자열의 위치는 매개변수 start와 end 값으로 설정한다. 치환 문자열은 매개변수 str이다. |
substring |
# 선언부: public String substring(int start) # 설명: StringBuffer 객체의 문자열을 잘라 새로운 String 문자열 객체를 반환한다. 매개변수 start index 위치부터 문자열 끝까지 잘라서 반환한다. |
length |
# 선언부: public int length() # 설명: StringBuffer 객체에 문자의 수를 반환한다. |
toString |
# 선언부: public String toString()
# 설명: StringBuffer 객체의 문자열 전체를 새로운 String 문자열 객체로 변환한다. |
2. StringTokenizer 클래스
# 문자열로부터 토큰을 뽑아내는 기능을 제공
1) 인스턴스하는 방법
2) 제공하는 메소드
* 기본 구분 문자는 공백(space)이다.
# 기본 구분 문자인 공백을 활용하기
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 | package stringex; import java.util.StringTokenizer; public class StringEx06 { public static void main(String[] args) { // 기본 구분 문자인 공백(space) String str = "This is Java Programming"; StringTokenizer token = new StringTokenizer(str); System.out.println("countToken: " + token.countTokens()); while(token.hasMoreElements()) { System.out.println(token.nextElement()); } System.out.println("countToken: " + token.countTokens()); } } # 실행 결과 countToken: 4 This is Java Programming countToken: 0 | cs |
# split() 메소드 오버로딩하여 활용하기
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 | package stringex; import java.util.StringTokenizer; public class StringEx07 { public String[] split(String str, String delim) { if (str == null || "".equals(str)) { return null; } StringTokenizer token = new StringTokenizer(str, delim); String[] rt = new String[token.countTokens()]; int i = 0; while(token.hasMoreElements()) { rt[i++] = token.nextToken(); } return rt; } public static void main(String[] args) { StringEx07 str = new StringEx07(); String[] arrStr = str.split("www.google.com", "."); for(int i=0; arrStr != null && i <arrStr.length; i++) { System.out.println(arrStr[i]); } } } # 실행 결과 www google com | cs |
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day08 | Final, Wrapper 클래스 (0) | 2018.01.23 |
---|---|
JAVA2_day08 | Date 클래스, Calendar 클래스 (0) | 2018.01.23 |
JAVA2_day07 | String 메소드 연습문제 (2) (0) | 2018.01.23 |
JAVA2_day07 | String 메소드 연습문제 (1) (0) | 2018.01.19 |
JAVA2_day06 | 추가공부 (String 클래스의 메소드) (0) | 2018.01.18 |