>Java >java지도 시간 >Java 문자열 풀: 힙 또는 스택 - 문자열 개체는 어디에 있습니까?

Java 문자열 풀: 힙 또는 스택 - 문자열 개체는 어디에 있습니까?

DDD
DDD원래의
2024-12-17 21:14:12905검색

Java String Pool: Heap or Stack—Where Does a String Object Reside?

Java 문자열 풀: 스택 할당과 힙 저장소

다음 코드 조각을 고려하세요.

String first = "abc"; 
String second = new String("abc");

new 키워드가 포함된 new String 객체는 힙에 고유한 String 객체를 생성합니다. 다른 프리미티브와 달리 String 객체는 불변입니다. 즉, 초기화 후에는 수정할 수 없습니다.

그러나 Java는 일반적으로 사용되는 제한된 수의 문자열을 저장하는 힙에 문자열 풀을 유지합니다. 리터럴 문자열(큰따옴표로 묶음)이 정의되면 컴파일러는 문자열 풀에서 일치하는 기존 문자열을 확인합니다. 발견되면 리터럴 문자열은 풀의 기존 문자열을 참조하여 메모리 효율성을 보장합니다.

이 예에서는 "abc"가 리터럴 문자열이므로 문자열 풀에 배치됩니다.

이제 new String("abc")으로 생성된 새 String 객체를 고려해 보겠습니다.

  • 새 String 객체가 힙은 문자열 풀이 아닙니다.
  • 리터럴 "abc"의 복사본임에도 불구하고 이 객체는 문자열 풀에 저장되지 않습니다.

따라서 우리의 코드 결과는 문자열 풀에 있는 하나의 문자열("abc"") 및 힙에 있는 하나의 고유한 문자열 (new String("abc")로 생성된 것).

위 내용은 Java 문자열 풀: 힙 또는 스택 - 문자열 개체는 어디에 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.