> Java > java지도 시간 > 본문

Java에서 문자열을 생성하기 위해 'new'를 사용하지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-13 16:45:02
원래의
668명이 탐색했습니다.

Why Don't We Use 'new' to Create Strings in Java?

Java에서 문자열은 객체입니다. 생성에 '새'가 없는 이유는 무엇입니까?

Java의 문자열은 객체이지만 다른 객체와는 달리 일반적으로 'new' 키워드를 사용하지 않고 생성됩니다. 이 관행은 왜 문자열 생성에 'new'가 필요하지 않은지에 대한 의문을 제기합니다.

'new'를 사용하지 않는 이유: 문자열 인턴

새 문자열을 생성하는 것보다 문자열 리터럴이 사용될 때마다 문자열 객체에서 Java는 인턴이라는 프로세스를 수행합니다. 인턴에는 문자열 풀이라는 중앙 풀에 문자열 리터럴을 저장하는 작업이 포함됩니다. 문자열 리터럴이 발견되면 문자열 풀과 비교하여 확인됩니다. 동일한 문자열 리터럴이 이미 존재하는 경우 새 객체를 생성하는 대신 기존 문자열에 대한 참조가 반환됩니다.

예:

다음 코드를 고려하세요.

String str1 = "Hello";
String str2 = "Hello";
로그인 후 복사

이 예에서 'str1'과 'str2'는 별도로 생성되었음에도 불구하고 문자열 풀에서 동일한 String 개체를 참조합니다. 결과적으로 'str1 == str2'는 true로 평가되어 물리적으로 동일함을 나타냅니다.

인턴의 장점:

인턴은 숫자를 줄여 성능을 최적화합니다. 특히 자주 사용되는 문자열에 대해 생성된 String 개체입니다. 예를 들어, 문자열 리터럴이 여러 번 사용되는 루프에서는 반복할 때마다 다시 생성하는 대신 하나의 String 객체만 생성되므로 메모리가 크게 절약됩니다.

'new'를 사용하여 문자열 생성

인턴이 권장되는 접근 방식이지만 'new'를 사용하여 문자열을 생성하는 것도 가능합니다. 그러나 이로 인해 동일한 문자열 값에 대해 여러 String 객체가 생성될 수 있으며, 이는 메모리 사용량과 성능에 영향을 미칠 수 있다는 점에 유의하는 것이 중요합니다.

결론:

Java에서 문자열 생성에 'new'가 없는 이유는 문자열 인터닝을 사용하기 때문입니다. 인터닝은 불필요한 객체 생성을 줄이고 메모리 효율성을 높여 성능을 향상시켜 문자열 생성에 선호되는 방법입니다.

위 내용은 Java에서 문자열을 생성하기 위해 'new'를 사용하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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