如何在JVM中表示char值?我们说
char ch = 'c';
在JVM中, ch 的值如何表示为 16位无符号整数?
答案 0 :(得分:8)
太长;没读;
1 。 java中的字符使用UTF-16
表示
2 。正如名称所暗示的,一个字符大小为16位
3 。 char
的默认值为0.
引用关于char
的{{3}}:
Unicode字符表示
char数据类型(因此是Character对象的值 encapsulates)基于原始的Unicode规范 将字符定义为固定宽度的16位实体。 Unicode 从那时起,标准被改为允许其角色 表示需要超过16位。法律代码的范围 点现在是U + 0000到U + 10FFFF,称为Unicode标量值。 (请参阅Unicode标准中U + n表示法的定义。)
有时会引用从U + 0000到U + FFFF的字符集 作为基本多语言平面(BMP)。代码指向的字符 大于U + FFFF被称为补充字符。 Java 2平台在char数组和中使用UTF-16表示 String和StringBuffer类。在此表示中,补充 字符表示为一对char值,第一个来自 高代理范围,(\ uD800- \ uDBFF),第二个来自 低代理范围(\ uDC00- \ uDFFF)。
因此,char值表示基本多语言平面(BMP) 代码点,包括代理代码点,或代码单位 UTF-16编码。 int值表示所有Unicode代码点, 包括补充代码点。较低(最不重要)21 int的比特用于表示Unicode代码点和上部 (最重要的)11位必须为零。除非另有规定, 关于补充字符和代理人的行为 char值如下:
只接受char值的方法不能支持补充 字符。他们将代理范围中的char值视为 未定义的字符。例如,Character.isLetter('\ uD840') 返回false,即使此特定值后跟any 字符串中的低代理值表示字母。方法 接受int值支持所有Unicode字符,包括 补充字符。例如,Character.isLetter(0x2F81A) 返回true,因为代码点值表示一个字母(一个CJK 表意文字)。在J2SE API文档中,使用Unicode代码点 对于U + 0000和U + 10FFFF之间范围内的字符值,和 Unicode代码单元用于作为代码单元的 16位char值 UTF-16编码。有关Unicode术语的更多信息, 请参阅Unicode词汇表。
答案 1 :(得分:2)
char
存储为UTF-16代码点,一个双字节整数。
因此小写的'c'是99(十进制)或0x0063(十六进制)。
答案 2 :(得分:0)
1。 char在Java中表示为 16位Unicode 值。
2。 char的默认值为'\ u0000'