Java의 불변 문자열 : 알아야 할 모든 것



이 기사는 Java의 Immutable String에 대한 상세하고 포괄적 인 지식을 제공합니다. 왜 중요한가요?

불변 문자열 다루기 모든 프로그래밍 언어에서 매우 중요한 측면입니다. 이 기사에서는 다음 사항에 대해 설명합니다.

hadoop 관리자 대 hadoop 개발자

Java의 불변 문자열 소개

문자열 풀에는 문자열이 변경 불가능하기 때문에 캐시 된 문자열 객체가 있습니다. 여러 클라이언트가 캐시 된 문자열 리터럴을 공유합니다. 한 고객의 행동과 관련된 위험은 다른 모든 고객에게 영향을 미칩니다.





예를 들어 클라이언트가 문자열 값 'Test'를 'TEST'로 변경하면 다른 모든 클라이언트에 변경된 값이 표시됩니다. 문자열 객체 캐싱이 성능에 중요했기 때문에 Immutable String 클래스는 위험을 피했습니다. 또한, String 클래스의 불변성이 손상되지 않도록 문자열이 최종적으로 만들어졌습니다. 확장 및 동작 재정의에 의해 수행되는 불변성, 캐싱, 해시 코드 계산의 예.

해시 맵 키

HashMap 키는 매우 널리 사용되며, HashMap에서 값 객체를 검색 할 수 있도록 불변성이 매우 중요합니다. 해싱 HashMap의 원칙이며, 제대로 작동하려면 동일한 값이 필요합니다. 두 개의 다른 해시 코드는 삽입시 하나씩 생성되고 삽입 후 콘텐츠가 수정되면 검색시 다른 해시 코드가 생성되어 맵에서 맵 값 개체가 손실 될 수 있습니다.



자바의 해시 테이블 불변 문자열
Java의 변경 불가능한 문자열 클래스가 가장 자주 묻는 질문입니다. .논의는 문자열이 무엇인지, C ++의 문자열과 어떻게 다른지로 시작합니다. 다음 질문은 Java의 불변 객체, 불변 객체의 이점, 용도 및 사용 시나리오입니다.

Java에서 변경 불가능한 문자열 필요

Immutable String 클래스가 Java로 만들어진 이유는 두 가지가 있습니다.

1. 하나의 문자열 객체 / 리터럴이있는 경우 전혀 불가능합니다.



아래 예를 참조하십시오.

'테스트'는 많은 참조 변수에 의해 참조 될 수 있습니다. 그들 중 하나가 다른 사람의 값을 변경하면 이것도 영향을받습니다. 방법을 살펴 보겠습니다.

문자열 A = '테스트'
문자열 B = '테스트'


String 동일한 객체를 다음과 같이 변경하는 'Test'.toUpperCase ()라는 호출'테스트'따라서 B는 필요하지 않은 'TEST'이기도합니다. 다음은 힙 메모리와 문자열 리터럴 풀에서 문자열이 생성되는 방식을 보여주는 다이어그램입니다.

2.이 문자열은 많은 Java 클래스의 매개 변수로 널리 사용되었습니다. 예를 들어, 네트워크 연결을 열 때 호스트 이름과 포트 번호를 문자열로 전달할 수 있고, 데이터베이스 연결을 열기 위해 데이터베이스 URL을 문자열로 전달할 수 있습니다.


변경 불가능한 문자열은 심각한 보안 위협으로 이어질 수 있습니다. 예를 들어, 누군가 자신이 액세스 할 수있는 파일에 액세스 한 다음 파일 이름을 변경하여 다른 파일에 액세스 할 수 있습니다. 불변성의 경우 이러한 위협에 대해 걱정할 필요가 없습니다.

변경 불가능한 문자열은 스레드를 안전하게 공유 할 수 있으며 이는 다중 스레드 프로그래밍에 중요합니다. 변경 불가능한 문자열 인스턴스는 Java에서 스레드로부터 안전하므로 Java에서 동기화 문제를 방지하기 위해 문자열 작업을 외부에서 동기화 할 필요가 없습니다. 주목해야 할 또 다른 중요한 점은 Substring으로 인한 메모리 누수입니다. 이는 스레드 관련 문제가 아니지만주의해야 할 사항입니다.

이것으로, 우리는이 '자바의 불변 문자열'기사의 끝으로 왔습니다. 씨 도대체 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.