가장 많이 사용되는 자료형중 하나인 String은 사실 객체이다. String객체를 좀 더 효율적으로 제어하는 방법에 대해 알아보자.


◆ 문자열(String)클래스

문자열(String)는 문자(char)의 배열 집합 형태이다.
따라서 문자열 클래스의 데이터가 변경될 경우 메모리상의 변화가 많아 느리다.

문자열이 변경되면, 기존의 문자 배열 데이터를 삭제하여 GC에 의해 회수되고, 새로운 배열을 만들어 생성되기 때문


◆ StringBuilder, StringBuffer

위와 같은 String클래스의 단점을 보완하여 만들어진 클래스로, 문자열 데이터가 변경될 경우 기존 데이터를 삭제하지 않고 재활용한다.

단, String이 StringBuilder, StringBuffer에 비해 느린 것은 사실이지만 체감할 수 있을 정도는 아니기 때문에 데이터처리가 많지않을 경우 굳이 사용할 필요는 없다.

StringBuffer는 안정성이 좀 더 좋으며(동기화 처리), 속도는 StringBuilder이 더 빠르다. 현재는 StringBuilder가 더 많이 이용되는 추세이다.

String s = new String("JAVA");
System.out.println(s);

StringBuffer sf = new StringBuffer("JAVA2");
System.out.println(sf);
sf.append(" StringBuffer");
System.out.println(sf);

StringBuilder sb = new StringBuilder("JAVA3");
System.out.println(sb);
sb.append(" StringBuilder");
System.out.println(sb);