慎先森小站

4 object(s)
 

Java char类型以什么编码存储字符?

本文仅限于新手了解char基本编码知识。

        JDK API中明确表示char字符信息基于 Unicode 标准。官方的一句话似乎结束了这篇文章,答案虽然已成定局,但还是有解释说明的余地。

        网上有些教程说char用的是Ascii编码。比如在学习char类型的时候,可以把Ascii编码的整形字符直接赋值给char,打印出来Ascii表对应的字符。这也是我遇到的问题。

        毋庸置疑char是Unicode编码,那为什么可以直接输入输出Ascii对应的字符?Unicode占用两个字节,而Ascii占用一个字节。其实Unicode包含了所有Ascii字符,同时对应方式也没发生改变。可以理解为Unicode是Ascii的超集。自然可以使用Ascii表对应的字符,但是就因为这说char是Ascii编码就太错了。

//char基本有以下几种格式:
char b = 97; //97就是Ascii对应表中的十进制97对应a
char c = '\u0061'; //'\u0061' 是a的Unicode编码,\u 表示这串字符是Unicode编码(Unicode编码是由16进制构成的)
char d = 0x0061; //0x0061 就是97的变形,把十进制换算为16进制
char e = 'a';
//上面全部输入的都是a;