為什么Java中一個char能存下一個漢字


在Java中,char的長度是2字節,即16位,2的16次方是65536。

1、如果采用utf-8編碼,一個漢字占3個字節,char為什么還能存下一個漢字呢?

參考:https://developer.aliyun.com/ask/65417?spm=a2c6h.13159736、https://blog.csdn.net/shipfei_csdn/article/details/81900952、https://blog.csdn.net/Sugar_Z_/article/details/51276984

因為Java使用Unicode字符集,Unicode用兩個字節表示世界上所有的文字集合。utf-8是字符編碼。字符集和字符編碼不一樣。

一個java文件使用utf-8編碼,經過編譯之后,使用unicode字符集。

字符集,就是包含各種字符的集合。utf-8是用來給unicode進行編碼的。

utf-8字符編碼,就是把字符和字節對應起來的一種方式。

2、遇到生僻字,String是咋存的?

示例代碼:

public static void charTest() {
        String s = "𥔲";
        System.out.println(s + ",length:" + s.length());
        for(int i=0; i<s.length(); i++) {
            int num = s.charAt(i);
            System.out.println(s.charAt(i) + "---" + num);
        }
    }

打印結果:

𥔲,length:2
?---55381
?---56626

證明:char只能存儲特定范圍內的漢字,超過了還是存不下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM