【问题标题】:The result of the addition of a char and an int [duplicate]添加char和int的结果[重复]
【发布时间】:2018-10-08 04:05:50
【问题描述】:

考虑以下代码:

System.out.println('G'+2);

输出为 73。我能知道为什么以及如何操作吗?

【问题讨论】:

  • 因为字符Gint值是71
  • 前两行是什么?

标签: java char int


【解决方案1】:

在 java 中,charUTF-16 编码中占用 16 位。

GunicodeU+0047,二进制为0000 0000 0100 1111

当您将charint(32 位)相加时,char 将通过在其二进制表示的开头插入0 转换为int。所以0000 0000 0100 1111 被转换为0000 0000 0000 0000 0000 0000 0100 1111(十进制,71)。

这就是你得到73的原因。

【讨论】:

  • 这是 unicode 表示,而不是 ascii。
  • convert 听起来更合理。
  • @saka1029 没错。由于 0-128 在 ascii 和 unicode 中得到相同的字符,所以我总是把它弄混。感谢您指出。
  • ASCII 存在这一事实在现代编程环境中几乎不相关(除非在编码到特定的 RFC 并且可能在最小的处理器中。)基本上,如果你不知道你绝对使用 ASCII,你几乎可以肯定不是。
  • @TomBlodget 我同意你的看法。
【解决方案2】:

在代码中,您将向 int 添加字符。 字符“G”的值为:71

更多详情请参见:ascii table

【讨论】:

  • java 使用 unicode 而不是 ascii。
【解决方案3】:

取G的ascii值加2。

【讨论】:

  • 这是 unocode 值而不是 ascii。
猜你喜欢
  • 2012-05-08
  • 2011-03-30
  • 2020-07-10
  • 1970-01-01
  • 2020-10-15
  • 2011-07-08
  • 2011-06-18
  • 2014-10-09
  • 1970-01-01
相关资源
最近更新 更多