Java char類型
char類型:表示Unicode字符。2個字節(16位,可表示65535個字符數)。使用定長編碼表示。
char是無符號數據類型。
可用數字直接量 或 字符 或int變量強轉
char c0 = '瀚'; char c00 = '\t'; //特殊字符型常量。 轉義字符\ char c1 = 97; //字符類型可以直接存放數字。字符底層就是碼點。 char的本質是一個整數,輸出時是Unicode碼對應的字符 char c10 = 65536; //編譯錯誤 char c2 = 'a'; //字符常量 char c3 = '\u0061'; //Unicode碼點 int i = 97; char c4 = (char)i; char c40 = i; //編譯錯誤
System.out.println((int)c0); //28698
char類型可進行運算,相當於一個整數,都有對應的Unicode碼
各國常用字符碼點範圍U+0000~U+FFFF,即char類型可表示的字符。
后Unicode字符集數量增多,超過65535個,U+10000~U+10FFFF的字符採用兩個代碼單元表示。
char可以表示一個代碼單元,無法直接表示兩個代碼單元。
使用16位表示一個字符,稱為代碼單元
兩個代碼單元使用字符串類型表示。字符串類型底層是由字符組成的。
String str = "\ud801\ud801\u0061";
System.out.println(str.charAt(1));
但用str.charAt(1)取出的是第二代碼單元,無法正確解析出字符。
U+0000~U+FFFF 基本多文種平面(BMP)
其中 替換區域:U+D800~U+DFFF
第一個代碼單元U+D800~U+DBFF, 第二個代碼單元U+DC00~U+DFFF。
其他平面的碼點偏移后填入編碼1101-10XX-XXXX-XXXX,1101-11XX-XXXX-XXXX的20位X中。即這32位表示碼點>65535的字符。

浙公网安备 33010602011771号