java - 这行 Java 代码在做什么?
问题描述
请考虑这段 Java 代码。它有效,但我试图了解它的作用。
char str = 'foo'
long prime = 503;
long hash = 0;
hash = prime + str.charAt(1);
我很困惑,因为这是不同数据类型的数学加法。如果我认为出于此数学运算的目的将字符转换为其 ASCII 值,我是否正确?
谢谢!
解决方案
首先,您的语法错误。我纠正了这一点(见下面的代码)。现在 的值hash
将是 614。因为hash = prime + str.charAt(1)
意味着您要在 str ie 的索引 1 处添加字符的 ASCII 值o
。o
的ASCII 值为111
。所以hash
相加后的值为614。
String str = "foo";
long prime = 503;
long hash = 0;
hash = prime + str.charAt(1);
System.out.println(hash); // This line prints 614. Because value prime is 503 and the ASCII value of `o` is 111.
您可以使用此 Ideone https://ideone.com/EcbP8x并运行代码以查看输出。
编辑
正如@Henry 指出的那样,字符的值不仅限于Java 中的ASCII 值。所以这里使用的更好的术语是 Unicode 代码点而不是 ASCII 值。要了解更多详细信息,请参阅ASCII 和 Unicode 有什么区别?
推荐阅读
- c# - 带有单选按钮的 C# 多项选择题
- encryption - SSAS 2017 的 TCP/IP 端口:2382 是否支持数据传输中的加密?
- java - 我的 isEmpty 方法不起作用,我不知道为什么
- javascript - 如何从一个函数中选择两个单个文件?
- wordpress - 下载失败。卷曲错误 7:。Wordpress 无法更新任何内容
- angular - Angular渲染引擎的目的是什么?
- python - Python List Append 不适用于切片列表
- python - Tkinter - 使用循环创建多个复选框
- google-app-engine - 登录的最低权限:App Engine 上的管理员
- git - 我不应该将 Flutter 项目中的哪些文件推送到远程仓库?