java - 这行Java代码在做什么?

标签 java types charat

请考虑一下这段 Java 代码。它有效,但我试图理解它的作用。

char str   = 'foo'
long prime = 503;
long hash  = 0;
hash = prime + str.charAt(1);

我很困惑,因为这是不同数据类型的数学加法。如果我认为为了进行数学运算而将字符转换为其 ASCII 值,我的想法是否正确?

谢谢!

最佳答案

首先,你的语法是错误的。我纠正了这一点(参见下面的代码)。现在 hash 的值将为 614。因为 hash = prime + str.charAt(1) 意味着您要在 str 的索引 1 处添加字符的 ASCII 值,即oo 的 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 值。了解更多详情请引用What's the difference between ASCII and Unicode?

关于java - 这行Java代码在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50477240/

相关文章:

javascript - 标题大小写 JavaScript

javascript - 连接字符串并将某些数字更改为另一个数字

java - 为什么我的文件没有上传到我的 java servlet?

java - Android SearchView 和 NavigationDrawer

java - 在java中返回自定义数据类型(类?)

c# - 动态设置 Func<> 类型

java - 如何处理未知实体引用?

javax.crypto.IllegalBlockSizeException : Data must not be longer than 256 bytes

javascript - 为什么类型为 ObjectID (MongoDB) 的 session 参数会转换为字符串?

java - charAt() 和 Math.pow()