JVM中的Char值表示

时间:2012-07-15 12:13:45

标签: java unicode character-encoding character

如何在JVM中表示char值?我们说

char ch = 'c';

在JVM中, ch 的值如何表示为 16位无符号整数

3 个答案:

答案 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'