본문 바로가기

Programming/JAVA

JAVA String 과 StringBuffer


String객체는 변경이 불가능한 immutable 객체이다.
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