首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 字符 Unicode 值原理:十進制 25105 ↔ 十六進制 \u6211 互轉詳解

     編輯:程式設計綜合問答

提問

「在 JAVA 中,漢字『我』輸出的值為 25105,轉換成 16 進制 Unicode 編碼為 \u6211。請問,這個數值如何得來?這其中與 Unicode 又有何關聯?」

核心回答

Java char 類型採用 UTF-16 編碼,每個字符佔 2 字節(16 位),直接對應 Unicode 碼點(BMP 範圍內)。

數值推導過程

  1. 字符『我』的 Unicode 碼點:U+6211(十六進制)。
  2. 十六進制 6211 轉十進制:
    6×16³ + 2×16² + 1×16¹ + 1×16⁰ = 6×4096 + 2×256 + 16 + 1 = 24576 + 512 + 17 = 25105。
  3. Java 中 char c = '我'; 其內存值即為 25105(十進制),打印 (int)c 輸出 25105。
  4. Java 源碼中可用 \u6211 直接表示該字符(編譯器編譯時轉換)。

代碼驗證

public class UnicodeDemo {
    public static void main(String[] args) {
        char c = '我';
        System.out.println("十進制: " + (int) c);           // 25105
        System.out.println("十六進制: " + Integer.toHexString(c)); // 6211
        System.out.println("Unicode 逃逸: \\u" + Integer.toHexString(c)); // \u6211
        
        // 反向:從碼點構造字符
        char c2 = 0x6211;
        System.out.println("字符: " + c2); // 我
    }
}

補充知識點

  • BMP vs 輔助平面:Unicode 碼點範圍 U+0000 ~ U+10FFFF。Java char 只能表示 BMP(U+FFFF 以內),輔助平面字符(如 Emoji 😀 U+1F600)需用 int 碼點或 String(UTF-16 代理對)表示。
  • Character.codePointAt() / codePointCount() 處理完整碼點。
  • Java 源文件編碼(UTF-8/GBK)與字符內部表示(UTF-16)是兩碼事,編譯器負責轉換。

總結

25105 就是 Unicode 碼點 U+6211 的十進制形式。Java char 直接存儲 UTF-16 代碼單元,對於 BMP 字符即等於其 Unicode 碼點值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved