【问题标题】:why the output displays 3 and not a char in java为什么输出在java中显示3而不是char
【发布时间】:2017-12-18 01:38:57
【问题描述】:

我会理解为什么输出是 3 而不是 char('5' unicode 字符)

char c='5';
c = (char) (c - 2);
System.out.println(c); 

你能解释一下代码 ASCII 和 unicode 字符之间的区别吗?

提前谢谢你:)

【问题讨论】:

  • 减法将字符'5'变成字符'3'。参见例如this ASCII table 了解原因。
  • “不是字符”是什么意思?这是字符 '3' - 不清楚你在问什么。
  • 一个关键的概念区别是 ASCII 有一种编码,而 Unicode 有几种。现在您知道了,您可以忘记 ASCII。你不是——也可能永远不会——编写使用 ASCII 的代码。 XML、HTML 等使用 Unicode。 Java、.NET、JavaScript、SQL(NCHAR、NVARCHAR)使用 Unicode 的 UTF-16 编码。 char 是一个 UTF-16 编码单元。

标签: java unicode char ascii arithmetic-expressions


【解决方案1】:

这是一个角色。它是一个代表数字 3 的字符,就像“3”是键盘上的一个字符一样。

当你从一个字符中减去一个时,你会得到紧接在那个字符之前的那个字符。例如,'B' - 1 = A

你从字符'5'开始减去2,得到字符'3'。如果你减去 6,你不会得到 -1,你会得到一个随机字符(我认为是'/')。

基本上这种减法是有效的,因为 字符 0 - 9 是连续存储的。

【讨论】:

    【解决方案2】:

    输出是char'3',而不是数字3

    当您从字符'5' 中减去2 并将结果转换为char 时,您将得到字符'3'

    char 类型是数字基本类型。每个字符都有一个对应的介于 0 和 2^16-1 之间的整数值。字符'3'的整数值比字符'5'的值小2。

    【讨论】:

      猜你喜欢
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2023-01-31
      相关资源
      最近更新 更多