String과 StringBuffer, StringBuilder 비교
1. String
1). 기본형 타입으로 문자열을 선언하면 Literal Pool에 문자열이 하나하나 나눠져 저장되어 다시 그 문자를 사용한다면 Literal Pool에 저장되었던 문자를 다시 사용한다.
》ex) String a = "abc"; -> abc가 Literal Pool에 저장
2). 참조형 타입을 문자열을 선언하면 Heap영역에 문자열이 저장된다.
》 ex) String a = new String("abc); -> a가 Stack영역에 있고 "abc"가 Heap에 저장되며 "abc"가 저장된 Heap영역의 주소값이 변수a에 저장된다.
3). 비교
》기본형은 ==로 비교
》참조형은 equals로 비교
》equalsIgnoreCase 메소드는 영문자를 대소문자 구분없이 비교
2. StringBuffer와 StringBuilder의 차이점
StringBuffer는 멀티스레드 환경에서 안전
StringBuilder는 멀티스레드 환경에서 불안전 하므로 스레드 환경에 따라 사용여부를 구분한다.
두 클래스는 거의 비슷하지만 단지 차이점이 있다면 클래스안에 StringBuffer는 synchronized 라는 구문이 있고(멀티스레드 환경에서 안전) StringBuilder 에는 없다
그러므로 StringBuilder 가 조금 아주 미약하게나마 성능이 좋다 하는데 안정성을 위해 StringBuffer 를 사용하는 걸 추천한다
3. StringBuffer,StringBuilder와 String의 차이점
1). StringBuffer와 StringBuilder는 문자열 수정이 메모리 효율적으로 좋다.
2). String은 문자열 수정 메모리 효율이 비교적 좋지 않다.
4. String, StringBuffer와 StringBuilder의 성능
String이 StringBuffer보다는 367배, StringBuilder보다는 512배 빠르고...
메모리사용량은 String이 StringBuffer, StringBuilder보다 3,390배 더 사용한다네요 ^^
결론적으로 String보다는 StringBuilder 사용이 좋을것같네요 ^^