Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java |整数到字符操作ASCII_Java - Fatal编程技术网

Java |整数到字符操作ASCII

Java |整数到字符操作ASCII,java,Java,下面是我正在努力理解的简单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”部分令人困惑,它到底在做什么?让我们这样看 String code =

下面是我正在努力理解的简单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”部分令人困惑,它到底在做什么?

让我们这样看

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,这就是这个函数的输出

重述:

  • 使用.charAt()函数将字符串“code”转换为字符数组,并引用数组的第0个元素,即1
  • ASCII值1是从1中减去的值
  • 然后打印a的ASCII值,即97
  • 希望这有帮助


    编辑:这里有一个很好的ASCII查找表参考:

    ,因为对java字符的算术计算会导致整数的形成

               char a='1',b='3';
               char x=a+b;//compilation error
    
    因此,java字符上的算术运算发生在ascii级别 因此,您必须将其强制转换为char并分配给x

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

    你可以在

    Hi上找到更好的解释。System.out.println对int、long和String有重载。当您调用
    code.charAt(0)
    时,结果是“char”类型,但除了转换为int之外,没有对char进行算术计算,因此计算结果是整数,java选择System.out.println(int)。在打印之前,你必须先将其转换为char。谢谢Jerry。“这是一个很好的解释。我很乐意帮忙,”沙石说。