【问题标题】:Java | Integer to char manipulation ASCII [duplicate]爪哇 |整数到字符操作 ASCII [重复]
【发布时间】:2019-03-05 14:13:30
【问题描述】:

我正在努力理解以下简单的 Java 程序。有人可以帮忙吗?

class Solution {
  public static void main (String args[])
  {
    String code ="1123";
    System.out.println( (code.charAt(0) - '1' + 'a' ));
  }
}

输出:97

我知道它返回字符 'a' 的 ASCII 值,但是 - '1' + 'a' 部分令人困惑,它到底在做什么?

【问题讨论】:

  • 嗨。 System.out.println 对 int、long、String 有重载。当你调用code.charAt(0)时,结果是“char”类型,但是char没有算术计算,除了它们转换为int,所以计算结果是一个整数,java选择System.out.println(int)。您必须在打印之前转换为 char。

标签: java


【解决方案1】:

让我们这样看。

String code ="1123";
System.out.println( (code.charAt(0) - '1' + 'a' ));

在这种情况下,code.charAt(0) 调用实质上是将您的代码字符串转换为数组,并获取第 0 个元素,即 1。

所以,正如您所说,正在发生的数学是在 ASCII 级别。 1 的 ASCII 值为 49,a 的 ASCII 值为 97。

所以数学说:49 - 49 + 97 我们知道,它等于 97,这就是这个函数的输出。

回顾一下:

  1. 使用.charAt()函数将String“code”变成字符数组,引用数组的第0个元素,即1
  2. ASCII 值 1 是从 1 中减去的
  3. 然后打印 a 的 ASCII 值,即 97

希望这会有所帮助!

编辑:这是 ASCII 查找表的一个很好的参考:http://www.asciitable.com/

【讨论】:

  • 谢谢杰瑞。这是很好的解释。
  • 我很高兴为您提供帮助,@Shashi。
【解决方案2】:

由于对 java chars 的算术计算导致形成整数。

           char a='1',b='3';
           char x=a+b;//compilation error

所以对 java 字符的算术运算发生在 ascii 级别 因此,您必须将其转换为 char 并分配给 x。

            char x=(char)(a+b);//executed

您可能会在here 上找到更好的解释

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2021-08-19
    • 2016-09-30
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2014-09-07
    相关资源
    最近更新 更多