首页 > 解决方案 > 这行 Java 代码在做什么?

问题描述

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

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

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

谢谢!

标签: javatypescharat

解决方案


首先,您的语法错误。我纠正了这一点(见下面的代码)。现在 的值hash将是 614。因为hash = prime + str.charAt(1)意味着您要在 str ie 的索引 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 值。要了解更多详细信息,请参阅ASCII 和 Unicode 有什么区别?


推荐阅读