在 Java 中,代碼點(diǎn)和代碼單元是兩個(gè)非常重要的概念。它們是 Unicode 字符存儲(chǔ)和操作的基本單元,也是 Java 語(yǔ)言中使用的基本單元。下面來(lái)詳細(xì)了解一下什么是代碼點(diǎn)和代碼單元。
代碼點(diǎn)是 Unicode 中的基本存儲(chǔ)單元。每個(gè)代碼點(diǎn)都是一個(gè)數(shù)字,用來(lái)表示一個(gè) Unicode 字符。Java 中的 char 類型是用來(lái)表示一個(gè)代碼點(diǎn)的。Java 中的 char 類型使用的是 UTF-16 編碼,一個(gè)代碼點(diǎn)使用 1 或 2 個(gè) char 類型來(lái)表示。如果一個(gè)代碼點(diǎn)需要使用 2 個(gè) char 類型來(lái)表示,那么這兩個(gè) char 類型聯(lián)合起來(lái)就可以表示這個(gè)代碼點(diǎn)。所以,在 Java 中,通過(guò) char 類型來(lái)表示 Unicode 字符是非常有限的。
// char 類型只能表示一個(gè)代碼單元,當(dāng)需要表示多個(gè)代碼單元時(shí)需要使用 String 類型 char ch = 'a'; // 表示代碼點(diǎn) U+0061 char ch2 = '\uD83C\uDF51'; // 表示代碼點(diǎn) U+1F351 String str = "\uD83C\uDF51"; // 可以表示代碼點(diǎn) U+1F351,需要使用兩個(gè)代碼單元
代碼單元是 Java 中 char 類型存儲(chǔ)的基本單元,是 char 類型的一個(gè)元素。因?yàn)槭褂?char 類型只能表示一個(gè)代碼點(diǎn)的一部分,所以在 Java 中要表示一個(gè) Unicode 字符,通常需要使用多個(gè)代碼單元組成的字符串來(lái)表示。在 Java 中,一個(gè)字符串實(shí)際上是由一個(gè)或多個(gè)代碼單元組成的字符序列。Java 中的字符串使用 UTF-16 編碼。
// 一個(gè) Unicode 字符需要多個(gè)代碼單元來(lái)表示 String str = "Hello, \uD83C\uDF1F!"; // 表示 “Hello,