请考虑一下这段 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 值,即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 值。了解更多详情请引用What's the difference between ASCII and Unicode?
关于java - 这行Java代码在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50477240/