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

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

Barbara Streisand
풀어 주다: 2024-12-16 00:40:11
원래의
636명이 탐색했습니다.

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

Java에서 "new String(...)" 사용

코드 구조 "new String(...)을 만날 때 )" Java에서는 그 목적과 효과를 이해하는 것이 중요합니다. 간단한 문자열 할당(예: "s = "Hello World";")과 달리 이 구문은 "new" 연산자를 활용하여 문자열 상수로 초기화하여 String 객체를 생성합니다.

목적 "new String(...)"

문자열 상수는 상수 풀에 있지만 "new String(...)"의 동작은 다음과 같지 않습니다. 짐작할 수 있듯이 간단합니다. 새로운 String 객체를 생성하는 동안 반드시 힙에 새 메모리가 할당되는 것은 아닙니다.

강제 복사에 대한 주의 사항

일반적인 오해 중 하나는 다음과 같습니다. "new String(...)"은 내부 문자 배열의 고유한 복사본을 강제합니다. 그러나 이 동작은 구현에 따라 다르며 문서화되지 않았습니다. 예를 들어 "small=new String(huge.substring(10,20))"을 통해 이를 달성하려고 시도하면 전체 원래 문자 배열이 유지되어 상당한 메모리를 소비할 수 있으므로 예상치 못한 결과가 발생할 수 있습니다.

고유 복사본을 위한 솔루션

문자 배열의 고유한 복사본을 보장하려면 "new"를 사용해야 합니다. 문자열(huge.substring(10,20).toCharArray())." 이를 위해서는 두 배의 메모리 복사가 필요하지만("toCharArray()"에 한 번, String 생성자에 한 번) 원하는 결과를 얻기 위한 구현 독립적인 방법입니다.

문서화 가정의 함정

문서의 명확성이나 정확성이 부족할 수 있다는 점을 기억하는 것이 중요합니다. "new String(...)"에 대한 문서에서는 지원 문자 배열의 복사본도 암시하는 "문자열"의 복사본을 생성한다고 제안합니다. 그러나 Apache Harmony 구현에서 볼 수 있듯이 항상 그런 것은 아닙니다.

결론

"new String(...)"의 뉘앙스 이해 Java는 잠재적인 함정을 피하는 데 필수적입니다. 항상 의도한 동작이 발생하는 것은 아니지만 일부 시나리오에서는 특정 목적을 수행합니다. 그러나 이 구문의 구현에 따른 특성을 알고 주의해서 진행하는 것이 좋습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿