将空括号分配给String引用变量

E_X*_*E_X 3 java oop reference object

将空括号值分配给Java中的String时会发生什么?

String s = "";
Run Code Online (Sandbox Code Playgroud)

对象引用变量s是否引用堆内存中携带String值为nothing的对象?

是什么让我问这个问题是当打印对象的哈希码时我得到零,这对我来说没有意义!

System.out.println("hash code is = " + s.hashCode());
Run Code Online (Sandbox Code Playgroud)

哈希码= 0

gio*_*shc 6

从String doc:

返回此字符串的哈希码.String对象的哈希码计算为s [0]*31 ^(n-1)+ s [1]*31 ^(n-2)+ ... + s [n-1]

因为你的字符串是空的,所以会得到0.