刚学Java遇到的一个小问题

char c=sc.next().charAt(0);
System.out.println((int)c);
刚学java,想用java实现字符转ASCII码,在网上看到一个这样的答案不太理解下面这段代码为什么能这样转?
还有java字符转ASCII码都有几种方法呢?
求各位解答。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1092072
  • 这篇博客你也可以参考下:java打印ASCII码的字符
  • 除此之外, 这篇博客: java char类型数值转int,以及获取ASCII码中的 总结: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    (char)( i + '0')
    (int)(c - '0')
    Character.getNumericValue(c)
    Integer.parseInt(String.valueOf(c))
    int i
    char c
    int i
    int i
    int i

    (本文均为自己实验及调研结果,如有纰漏,望大家指正!)

  • 您还可以看一下 张长志老师的通俗易懂的Java安全密码学教程课程中的 09_JAVA-字符串对应ascii编码小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

char本质就是一个数字,可以强制类型转换变成int,此时就是ascii值。

这个就是java中默认的,int长度4个字节,char长度为2个字节,所以char→int为自动转换,int→char为强制转换(因为可能有数据丢失风险)
另外Java中涉及char的运算操作,都会先将这些值转换为int,再对int类型进行操作。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

这段代码是先从控制台读取一个字符,然后将该字符转换为ASCII码并输出。

Java中字符类型char本质上是16位的Unicode字符,但是可以将其转换为int类型来获取其对应的ASCII码值。因为ASCII码只使用了7位,因此ASCII码值的范围是0-127,可以用一个整数类型来表示。

除了使用强制类型转换将char类型转换为int类型来获取ASCII码值外,Java中还有其他几种方式可以实现字符转ASCII码:

1. 使用Character类的getNumericValue()方法:

int ascii = Character.getNumericValue(c);

2. 使用Java内置的转换函数:

int ascii = (int) c;

3. 使用String类的getBytes()方法:

byte[] asciiBytes = String.valueOf(c).getBytes();
int ascii = asciiBytes[0];

需要注意的是,第三种方法将字符转换为字节数组后再获取ASCII码值,可能会出现字节数组长度大于1的情况,这时需要根据具体需求来确定如何处理。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢