"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java 문자열은 몇 바이트를 차지하며, 대답이 인코딩에 따라 달라지는 이유는 무엇입니까?

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

2024-11-08에 게시됨
검색:750

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() 메서드를 사용하여 문자열을 바이트 배열로 변환할 수 있습니다.

byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");

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

int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;

예제

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

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

고려 사항

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

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3