Java 当转换为整数时,构成整数值1到96的字符符号是什么?
当我在java中将字母字符从Java 当转换为整数时,构成整数值1到96的字符符号是什么?,java,char,int,Java,Char,Int,当我在java中将字母字符从char转换为int时,我按字母顺序将值97转换为122 int a = (char) 'a'; //97 int b = (char) 'b'; //98 ... 当转换为int时,字符值是什么?给出值1到96?一级近似值,1 Javachar表示Unicode字符。Unicode是一个标准,它定义了一组字符,每个字符都有一个唯一的整数值,即它的“代码点” Unicode代码点通常以十六进制(以16为基数)编写,前导零足够多,因此它们至少有四个十六进制数字长。在前
char
转换为int
时,我按字母顺序将值97
转换为122
int a = (char) 'a'; //97
int b = (char) 'b'; //98
...
当转换为int
时,字符值是什么?给出值1
到96
?一级近似值,1 Javachar
表示Unicode字符。Unicode是一个标准,它定义了一组字符,每个字符都有一个唯一的整数值,即它的“代码点”
Unicode代码点通常以十六进制(以16为基数)编写,前导零足够多,因此它们至少有四个十六进制数字长。在前面加上一个U+
,因为,Unicode.:-)因此,例如,整数值65通常写为U+0041
(41
,因为4×16+1=65)
要找出U+0041表示的字符-即代码点为整数值65的字符-可以在中查找。或者,你可以。无论哪种方式,您都会发现它代表大写字母'A'
或者,您可以这样写:
char character0041 = (char) 65;
System.out.println(character0041);
您将看到它打印一个A
后一种方法的几个注意事项:
- 许多Unicode字符实际上并不代表您可能在纸上书写的字符。例如,换行符由Unicode字符表示;如果您试图将这些打印到屏幕上,您将看不到打印的内容,因为打印换行符的效果是,只移动到下一行
- 新的Unicode字符是定期定义的。有许多可能的值当前未使用,也有许多值保证永远不会使用。因此,如果您试图打印其中一个字符,Java将不会打印任何有用的内容
- 您的控制台可能不支持全部Unicode字符。如果您试图打印一个整数值大于127的字符,您可能会发现它打印的是胡言乱语。(但话说回来,它可能比这更聪明。试试看!)
脚注:
char
s只升到U+FFFF,而最大的Unicode码点是U+10FFFF(大17倍)。其工作方式是,Unicode定义了一系列称为“代理”的代码点,这些代码点保证永远不会是字符。然后有一个叫做UTF-16的复杂方案,用于使用这些未分配的码点对来表示char
范围之外的字符。但幸运的是,Java程序员通常不需要担心这一点Java使用的字符集被称为“Unicode”(特别是“UTF-16”,但这对于现在来说太详细了)。“Unicode”是一种基于“ASCII”()的方案,但Unicode允许(大量)更多字符 因此,为了理解Unicode,理解ASCII是很有帮助的 ASCII最初是在20世纪60年代早期作为电传打字式通信的代码开发的。它由7个数据位和一个(可选)奇偶校验位组成。因此,ASCII字符的值介于0和127之间(可以用7位表示) 前32个组合是“控制字符”(如“回车符”、“换行符”、“制表符”,我们将其识别为
'\r'
、'\n'
和'\t'
)。此外,all-One组合通常被视为控制字符,留下95个可能的“图形”字符(如果将“空格”计算为图形)
字符分组排列,“空格”作为最小值的图形(0x20)和一些标点字符(!“#$%”()*+,-./
)之后。从0x30开始的是数字0-9。从0x41开始的是大写A,大写字母在0x5A连续到Z。然后小写字母运行0x61到
0x7A.剩余的标点符号和非数字、非字母字符填充剩余的空格
Unicode与ASCII的不同之处在于,虽然它完全包括ASCII作为前128个字符的位置,但单个Unicode字符可以占用16或32位。这意味着,不仅可以表示斯堪的纳维亚语言中使用的重音字符,甚至可以表示中日语言的复杂图形除非java字符代表了UTF16代码单元而不是ASCII字符。这两个集合在0~127范围内是一致的,但一个好的答案可以明确地解释这一点,并且解释它们不一致的范围(甚至更大)。你是否考虑过<代码> Soop.Out.PrtLn((char)96)。?(我看不出这个问题怎么是“一个简单的印刷错误”。这是一个有效的问题,证明了许多新手程序员所缺乏的洞察力。)@HotLicks:我同意你不应该一下子涉过所有的麻烦,但我从你那里得出了相反的结论:我认为只有在熟悉Unicode的基本知识之后,才应该提到并理解ASCII。我们老前辈认为Unicode是一种扩展的ASCII,但对于第一语言是Java的新手来说,Unicode是(或应该是)简单/正常/常见的情况,而ASCII是(或应该是)一个技术脚注。(当然,这并不意味着需要立即理解Unicode的所有细节!)