본문 바로가기
WEB/Java

String

by 노랑파랑 2017. 1. 3.
반응형




String

▷불변객체이다. (한번 객체가 생성되면 저장된 값은 변경되지 않는다)

▷String a = new String("abc") , String a ="abc" 두 가지 유형으로 생성가능




String과 new String의 차이점

메모리 영역(String Pool)

▷new String, String 모두 객체를 생성한 다는 점을 같지만 생성되는 메모리 영역이 다르다,

이미지 참조(journaldev.com)

▷String s = ""를 이용해 문자열을 생성하면 String Pool에서 동일한 값을 가진 String을 먼저 찾고, 같은 값이 있다면 단지 그 값을 참조하고 같은 값이 없다면 Pool에 새로운 String을 생성하고 참조자를 반환한다.

▷new 연산자를 사용하면(new String) 새로운 String 객체가 Heap공간에 생성되며 intern() 메소드를 통해 Pool에 넣거나 String Pool에서 같은 값을 가진 다른 String 객체를 참조할 수 있다.





불변 객체

▷생성 후 그 값을 변경할 수 없는 객체

String s1 = "abc";


s1 = "가나다";



▷위 그림에서 보다시피 "abc"라는 문자열 자체가 변경된 것이 아닌 "가나다"라는 새로운 문자열 객체가 생성되고 "abc" 문자열 객체는 Garbage가 되어 Garbage Collector에 의해 일정 시간 후 소거된다.

▷따라서 문자열 조작이 많다면 엄청남 수의 string 객체가 생성되어 퍼포먼스가 나빠지며 메모리 효율성도 저하된다.

문자열 조작이 있을 경우에는 StringBuffer(문자열 조작을 위한 Helper 클래스)를 사용한다. 


반응형

'WEB > Java' 카테고리의 다른 글

Spring Framework : DI  (0) 2017.01.03
Spring Framework : 개념  (0) 2017.01.03
제네릭  (0) 2017.01.03
오버라이딩(Overriding), 오버로딩(Overloading)  (0) 2017.01.03
Map 인터페이스  (0) 2016.12.14