请考虑这段Java代码.它有效,但我试图了解它的作用.
char str = 'foo'
long prime = 503;
long hash = 0;
hash = prime + str.charAt(1);
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为这是不同数据类型的数学加法.如果我认为为了这个数学运算的目的而将字符转换为ASCII值,我会是正确的吗?
谢谢!
首先,你的语法是错误的.我更正了(见下面的代码).现在值为hash614.因为hash = prime + str.charAt(1)意味着你要在str的索引1处添加字符的ASCII值o.ASCII值o是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.
Run Code Online (Sandbox Code Playgroud)
您可以使用此Ideone https://ideone.com/EcbP8x并运行代码以查看输出.
编辑
正如@Henry指出的那样,字符的值不仅限于Java中的ASCII值.因此,这里使用的更好的术语是Unicode代码点而不是ASCII值.要了解更多详细信息,请参阅ASCII和Unicode之间的区别是什么?