Rumah  >  Artikel  >  Java  >  Berapa banyak bait yang diduduki rentetan Java, dan mengapa jawapannya bergantung pada pengekodannya?

Berapa banyak bait yang diduduki rentetan Java, dan mengapa jawapannya bergantung pada pengekodannya?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 04:42:03504semak imbas

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

Mengira Kiraan Bait Rentetan dalam Java

Dalam Java, rentetan terdiri daripada aksara, yang boleh berbeza dalam perwakilan baitnya berdasarkan pengekodan yang dipilih. Untuk menentukan bilangan bait dalam rentetan, seseorang mesti mempertimbangkan pengekodan aksara yang digunakan untuk penukarannya kepada bait.

Kira Byte Bergantung Pengekodan

Kunci untuk memahami kiraan bait ialah pengekodan yang berbeza menghasilkan saiz bait yang berbeza untuk rentetan yang sama. Sebagai contoh, rentetan yang dikodkan dalam UTF-8 mungkin memerlukan 1 bait setiap aksara, manakala satu yang dikodkan dalam UTF-16 mungkin memerlukan 2 bait setiap aksara.

Menukar Rentetan kepada Bait

Untuk mengira kiraan bait, kita boleh menukar rentetan kepada tatasusunan bait menggunakan kaedah getBytes():

<code class="java">byte[] utf8Bytes = string.getBytes("UTF-8");
byte[] utf16Bytes = string.getBytes("UTF-16");</code>

Panjang tatasusunan bait yang terhasil menyediakan kiraan bait untuk pengekodan tertentu itu :

<code class="java">int utf8ByteCount = utf8Bytes.length;
int utf16ByteCount = utf16Bytes.length;</code>

Contoh

Pertimbangkan rentetan "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>

Pertimbangan

Adalah penting untuk menentukan pengekodan aksara yang dikehendaki secara eksplisit apabila menukar rentetan kepada bait. Bergantung pada lalai boleh membawa kepada hasil yang tidak dijangka, terutamanya apabila menggunakan bahasa yang menggunakan aksara bukan ASCII.

Selain itu, ambil perhatian bahawa pengekodan tertentu, seperti UTF-8, mungkin menggunakan pengekodan panjang berubah-ubah untuk aksara. Ini bermakna bahawa satu aksara boleh diwakili oleh bilangan bait yang berbeza-beza, seterusnya menyerlahkan kepentingan pemilihan pengekodan.

Atas ialah kandungan terperinci Berapa banyak bait yang diduduki rentetan Java, dan mengapa jawapannya bergantung pada pengekodannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn