String pool

TRASALBY·2024년 3월 19일
0

학습내용 옮기기

목록 보기
4/8

String의 저장 위치

  • JVM에서 변수를 저장하게 되면 해당 변수는 Heap영역에 저장된다.
  • String도 마찬가지로 Heap에 저장되지만 자주 사용되는 타입인 만큼 특별한 방식으로 저장된다.

String Constant Pool

  • String 변수를 선언하면 우선 String Constant Pool에 해당 변수가 존재하는지 먼저 확인을 한다.
  • 만약 발견했다면 해당값을 참조하도록 설정한다.
  • 발견하지 못했다면 새로운 String을 String Constant Pool에 저장 한다.
  • 이 과정을 통해 기존에 생성된 문자열과 같은 내용이라면 추가 메모리 할당 없이 사용할 수 있다.

String 생성자 사용

  • String의 생성자를 사용하면 String Constant Pool 바깥에 생성된다.
val StringA1 = "ABC"
val StringB1 = "ABC"

stringA1 == stringB1 // true
stringA1 === stringB1 // true

val StringA2 = "ABC"
val StringB2 = String(charArrayOf('A','B','C'))

stringA2 == stringB2 // true
stringA2 === stringB2 // false
  • == 연산은 같은 hashcode를 반환하는지 비교하고 ===연산은 같은 주소값을 가지는지 비교한다.
  • 위의 경우는 같은 String Constant Pool의 문자열을 참조하고 있어 그 주소값 또한 같게 나타난다.
  • 아래의 경우는 StringB2가 String Constant Pool 바깥에 위치하여 hashcode는 값지만 주소값은 다르게 나타난다.

0개의 댓글

관련 채용 정보