Java에서는 "abc"와 같은 "문자열 리터럴"이 삽입됩니다. 이는 동일한 리터럴 값에 대한 여러 참조가 동일한 값을 가리킨다는 의미입니다. 인스턴스를 메모리에 저장합니다. 이는 메모리 사용량과 성능을 최적화하는 데 도움이 됩니다. 그러나 new String("abc")과 같은 문자열 리터럴과 함께 new를 사용하면 리터럴이 문자열 풀에 이미 존재하더라도 새 문자열 개체가 생성됩니다.
문자열 풀에 관한 두 가지 설명이 제기되었습니다. 약간의 혼란:
명확히 설명하자면, 명령문 2에서는 new를 사용하여 개체를 생성할 때에도 문자열 리터럴이 여전히 문자열 풀에 억류되어 있지만 이에 관계없이 새 개체가 생성된다는 점을 암시합니다.
예:
String one = new String("test"); String two = "test";
인턴으로 인해 new String("test")에 전달된 참조가 2개와 동일합니다. 그러나 값이 "test"인 새 String 객체가 생성되어 하나에 할당됩니다.
따라서 값이 "test"인 별도의 String 객체가 두 개 있습니다. 하나는 상수 풀에 있습니다(두 개가 참조함). 그리고 new로 생성된 새로운 것(하나에 의해 참조됨). 그렇기 때문에 one.equals(two)는 true(같은 값을 가짐)이지만 one == two는 false(다른 객체를 참조함)입니다.
문 1은 "컴파일러가 다음을 발견할 때"로 바꿔야 합니다. 문자열 리터럴을 사용하면 동일한 문자열이 _풀에_ 이미 존재하는지 확인합니다." 문자열은 명시적으로 인턴되거나 클래스 정의에서 리터럴로 사용되는 경우에만 인턴됩니다.
위 내용은 Java 문자열 풀은 `new String(\'literal\')`을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!