String클래스의 메소드를 이용해서 문자열을 바꾼느 것은 문자열 내용이 바뀐것이 아니라 새로운 객체가 생성된 것이라고 생각하면 된다. 문자열을 계속 바꾸게 된다면 그만큼 쓸모없는 객체가 많아진다는 것이기 때문에 시스템의 과부화를 불러올 수 있다.
String Class의 유용한 method
1. length()
String string = "abcde";
int len = string.length; // len에는 5가 입력된다.
2. charAt()
Stirng string = "abcde";
char a = string.charAt(3); // a에는 d가 입력된다. 0번지 부터 시작해서 3번지의 위치는 d
3. substring()
String string = "abcde";
String test = string.substring(2,4) //test에는 string의 2번째 부터 4번째 까지인 cde가 입력된다.
StringBuffer 객체는 변경이 가능한 mutable 객체이다.
String string = "abcde";
StringBuffer buf = new StringBuffer(string); 과 같은 방법으로 String 객체를 StringBuffer 객체로 변환할 수 있다.
반대로
StringBuffer buf = new StringBuffer("abcde");
String string = buf,toString(); 과 같은방법으로 toString() 메소드를 이용해서 변경한다.
자바에서 문자열의 변경이 필요한 경우 String에서 바로 작업하는 것 보다는
StringBuffer 객체를 이용해서 변경작업을 한 뒤 다시 String으로 바꿔서 저장하는 것이 효율적이다.
example )
1. public class StringBufferTest {
2. public static void main(String[] args) {
3. StringBuffer sb = new StringBuffer("Hello");
4. sb.append("Java");
5. System.out.println(sb); //HelloJava
6.
7. sb.insert(5, " My ");
8. System.out.println(sb); //Hello My Java
9.
10. sb.reverse();
11. System.out.println(sb); // avaJ yM olleH
12.
13. sb.setCharAt(6,'m');
14. System.out.println(sb); //avaJ yM olleH
15.
16. sb.reverse();
17. System.out.println(sb); //Hello my Java!
18.
19. sb.setLength(5);
20. System.out.println(sb); //Hello
21.
22. String s = sb.toString();
23. System.out.println(s); //Hello
24. }
25. }
'Programming > JAVA' 카테고리의 다른 글
JAVA 예외처리 (0) | 2010.02.23 |
---|---|
JAVA Collection API (0) | 2010.02.23 |
JAVA 중첩클래스 ( Nested Class ) (0) | 2010.02.22 |
JAVA 추상메소드 & 인터페이스 (0) | 2010.02.22 |
JAVA main() 메소드가 public static인 이유. (0) | 2010.02.21 |