>Java >java지도 시간 >언제, 왜 Java에서 `new String(...)`을 사용합니까?

언제, 왜 Java에서 `new String(...)`을 사용합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-24 03:35:14208검색

When and Why Would You Use `new String(...)` in Java?

Java의 문자열 객체에 대한 문자열 상수 할당: "new String(...)" 이해

코드 샘플을 검사하는 동안 다음과 같은 작업을 수행할 수 있습니다. "new" 연산자를 사용하여 String 객체에 String 상수를 할당한 경우가 있습니다. 이 구문은 특히 상수 풀에 있는 일반적인 문자열 상수 저장을 고려할 때 그 목적과 효과에 대한 의문을 제기합니다.

"new String(...)"의 목적

"new String(...)"의 주요 목적은 지정된 문자열 리터럴의 복사본을 포함하는 새 String 개체를 만드는 것입니다. 상수 풀에 저장된 기존 문자열 리터럴을 참조하는 "s = "Hello World";"와 달리 "s = new String("Hello World");" 자체 문자 배열 백업 저장소를 사용하여 힙에 새 객체를 생성합니다.

힙에 할당

예, "new String(... )", 문자열 값을 저장하기 위해 새 개체가 힙에 할당됩니다. 이는 상수 풀에서 기존 문자열 리터럴을 참조하는 것과 대조됩니다.

사용 사례 및 구현 종속성

특정 시나리오에서는 별도의 복사본을 강제로 생성해야 할 수도 있습니다. "new String(...)"을 사용하여 내부 문자 배열을 만듭니다. 예:

그러나 이 동작은 문서화되지 않았으며 구현에 따라 다릅니다. 다양한 JVM(Java Virtual Machine)이 이 표현식을 다르게 처리할 수 있습니다.

함정 및 제한 사항

Apache Harmony에서 String(String)의 이전 구현은 실제로 기본 문자 배열의 복사본입니다. 이로 인해 더 이상 필요하지 않은 경우에도 큰 문자 배열에 대한 참조를 유지하는 등 잠재적인 메모리 문제가 발생할 수 있습니다.

별도의 문자 복사본을 사용하여 새 String 객체를 생성하려면 다음이 필요합니다. 사용:

이 접근 방식은 문자의 고유한 복사본을 보장하지만 두 개의 배열 복사본이 필요합니다. 비효율적입니다.

결론

"new String(...)" 표현식은 지정된 문자열 리터럴의 복사본을 포함하는 힙에 새 String 객체를 생성합니다. 특정 시나리오에서는 유용할 수 있지만 예상치 못한 동작을 방지하려면 잠재적인 함정과 구현 종속성을 인식하는 것이 중요합니다.

위 내용은 언제, 왜 Java에서 `new String(...)`을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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