> Java > java지도 시간 > Java 문자열은 몇 바이트를 차지하며, 대답이 인코딩에 따라 달라지는 이유는 무엇입니까?

Java 문자열은 몇 바이트를 차지하며, 대답이 인코딩에 따라 달라지는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-26 04:42:03
원래의
575명이 탐색했습니다.

How many bytes does a Java string occupy, and why does the answer depend on its encoding?

Java에서 문자열의 바이트 수 계산

Java에서 문자열은 문자로 구성되며, 문자는 문자에 따라 바이트 표현이 달라질 수 있습니다. 선택한 인코딩. 문자열의 바이트 수를 결정하려면 바이트로 변환하는 데 사용되는 문자 인코딩을 고려해야 합니다.

인코딩 종속 바이트 수

이해의 열쇠 바이트 수는 인코딩이 다르면 동일한 문자열에 대해 바이트 크기가 다르다는 것입니다. 예를 들어, UTF-8로 인코딩된 문자열은 문자당 1바이트가 필요할 수 있고, UTF-16으로 인코딩된 문자열은 문자당 2바이트가 필요할 수 있습니다.

문자열을 바이트로 변환

바이트 수를 계산하려면 getBytes() 메서드를 사용하여 문자열을 바이트 배열로 변환할 수 있습니다.

<code class="java">byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");</code>
로그인 후 복사

결과 바이트 배열의 길이는 해당 특정 인코딩에 대한 바이트 수를 제공합니다. :

<code class="java">int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;</code>
로그인 후 복사

"Hello World" 문자열을 고려하세요.

<code class="java">String string = "Hello World";

// Print the number of characters in the string
System.out.println(string.length()); // 11

// Calculate the byte count for different encodings
byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");
byte[] utf32Bytes = string.getBytes("UTF-32");

// Print the byte counts
System.out.println(utf8Bytes.length); // 11
System.out.println(utf16Bytes.length); // 24
System.out.println(utf32Bytes.length); // 44</code>
로그인 후 복사

고려 사항

문자열을 바이트로 변환할 때 원하는 문자 인코딩을 명시적으로 지정하는 것이 중요합니다. 기본값에 의존하면 특히 ASCII가 아닌 문자를 사용하는 언어로 작업할 때 예상치 못한 결과가 발생할 수 있습니다.

또한 UTF-8과 같은 특정 인코딩에서는 문자에 가변 길이 인코딩을 사용할 수 있습니다. 이는 단일 문자가 다양한 바이트 수로 표현될 수 있음을 의미하며, 인코딩 선택의 중요성이 더욱 강조됩니다.

위 내용은 Java 문자열은 몇 바이트를 차지하며, 대답이 인코딩에 따라 달라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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