当您说“jobject 类型的值”时,我猜您的意思是toString返回的值。如果您查看 java doc 它指出:
Object 类的 toString 方法返回一个字符串,该字符串由对象作为其实例的类的名称、at 符号字符“@”和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
如果您查看 Java 文档中的hashCode方法,它会指出:
每当在 Java 应用程序执行期间对同一对象多次调用时,hashCode 方法必须始终返回相同的整数
并且
在合理可行的情况下,由 Object 类定义的 hashCode 方法确实为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但 JavaTM 编程语言不需要这种实现技术。)
更新:对 Ryan 评论的回应:即使 hashcode 方法被覆盖,System.identityHashCode也会为您提供原始哈希码。但是,就像评论一样,它并不是真正独一无二的。
所以我想你的问题的答案是肯定的,它是不可变的,而且很可能是独一无二的,但你应该阅读你的 JVM 的文档或源代码。