Java의 문자열 표현 풀기: UTF-16 또는 수정된 UTF-8?
Java 영역에서 문자열의 내부 표현은 다음과 같습니다. 논쟁의 대상이 되었습니다. 겉보기에 신뢰할 만한 두 출처는 상충되는 정보를 제공합니다.
한 출처에서는 Java가 내부 텍스트 표현에 UTF-16을 사용한다고 제안하고 다른 출처에서는 UTF-8의 수정된 버전을 가정합니다. 다음 중 어떤 주장이 사실인가요?
답: 내부 표현을 위한 UTF-16
Java는 문자열, 문자열을 포함한 텍스트의 내부 표현을 위해 UTF-16을 채택합니다. 건축업자 및 기타 관련 구조물. 이 인코딩 시스템은 16비트 유니코드 코드 단위를 활용하여 U 0000 ~ U FFFF 범위 내의 문자 또는 UTF-16 코드 단위를 나타냅니다.
직렬화를 위해 수정된 UTF-8
Java는 내부적으로 UTF-16을 선호하지만 문자열 직렬화에는 비표준 UTF-8 변형을 사용합니다. 직렬화에는 Java 객체를 저장 및 전송 가능한 형식으로 변환하는 작업이 포함되며, 이 맥락에서 직렬화된 문자열은 수정된 UTF-8을 사용하여 표현됩니다.
메모리 내 저장소: 압축 문자열
JVM 수준에서 Java는 UTF-16 인코딩이 필요하지 않은 문자열을 8비트 ISO-8859-1 인코딩을 사용하여 저장할 수 있는 압축 문자열(-XX: UseCompressedStrings로 활성화)을 사용할 수 있습니다. 이 최적화를 통해 특정 유형의 문자열에 대한 메모리 사용량이 줄어듭니다.
Char의 바이트 사용량
Java의 char 변수는 객체 내의 패딩 고려 사항에 관계없이 일관되게 2바이트를 차지합니다. .
코드 포인트 및 문자 표현
65535 제한을 초과하는 문자를 나타내는 코드 포인트는 하나 또는 두 개의 문자( 즉, 2 또는 4바이트).
위 내용은 Java는 내부적으로 문자열(UTF-16 또는 수정된 UTF-8)을 어떻게 표현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!