Java中的字符位

时间:2015-09-16 16:42:51

标签: java io utf

据我所知,a是一个8位字符,â是一个16位字符:

  1. 如何知道字符是8位还是16位或更高?

  2. 为什么â字符不能以8位出现?

  3. aâ只是用户界面形式,它们在位形式中看起来如何?

  4. 97是a的代码,如何计算这个数字或者它只是字符的序数?

1 个答案:

答案 0 :(得分:5)

  

据我所知'a'是一个8位字符,'â'是一个16位字符。

不是真的。 Java char是无符号的16位类型,因此'a''â'都是16位字符。确实,'a'的前8位设置为零,但这些位仍然存在。同样适用于'â'(见下文)。

  

如何知道字符是8位还是16位或更高?

ch & 0xFF00与零进行比较。如果它为零,则高8位全为零;否则,这8位中的一些是非零的。

  

为什么'â'字符不能以8位出现?

它可以表示为使用8位:'â'的代码是0xE2或226.它适合8位,但它不适合7位。这是查找字符代码的方便table

  

'a''â'只是用户界面形式,它们在位形式中看起来如何?

由于char是一个整数类型,您可以将其转换为int并以二进制,十进制,十六进制或其他基数打印它们,以查看字符表示后面的位模式。

  

97是'a'的代码,如何计算这个数字或它只是字符的序数?

'a'投射到int

int a = (int)'a';