解開 Java 的字串表示形式:UTF-16 還是修改後的 UTF-8?
在 Java 領域,字串的內部表示形式有一直是爭論的議題。兩個看似可靠的來源提供了相互矛盾的資訊:
一個來源建議 Java 使用 UTF-16 進行內部文本表示,而另一個來源則提出 UTF-8 的修改版本。下列哪一個說法成立?
答案:UTF-16 用於內部表示
Java 採用UTF-16 作為文本的內部表示,包括字串、字串建築商和其他相關結構。此編碼系統使用 16 位元 Unicode 代碼單元來表示 U 0000 到 U FFFF 範圍內的字元或 UTF-16 代碼單元。
用於序列化的修改版UTF-8
雖然Java 在內部支援UTF-16,但它使用UTF-8 的非標準變體來序列化字串。序列化涉及將 Java 物件轉換為可儲存和可傳輸的格式,在這種情況下,序列化字串使用修改後的 UTF-8 表示。
記憶體儲存:壓縮字串
在JVM 級別,Java 可能會使用壓縮字串(透過-XX: UseCompressedStrings 啟動),其中不需要UTF-16編碼的字串可以使用8 位元ISO-8859-1 編碼來儲存。此優化減少了特定類型字串的記憶體使用量。
Char 的位元組使用
Java 中的char 變數總是佔用2 個位元組,無論物件內的填充考慮因素為何.
代碼點和字元表示
需要注意的是,表示超出65535 限制的字元的代碼點可以使用一個或兩個字元來表示 (即 2 或 4 個位元組)。
以上是Java 內部如何表示字串:UTF-16 或修改版 UTF-8?的詳細內容。更多資訊請關注PHP中文網其他相關文章!