Android 解释上下文的字符串表示

Android 解释上下文的字符串表示,android,Android,出于好奇,我使用以下代码显示了上下文的字符串表示: this.toString() + "\n" + getApplicationContext().toString() + "\n" + getBaseContext().toString() 它给了我: com.example.makz.bud。MainActivity@b0fe7ef0 android.app。Application@b0fe62a0 android.app。ContextImpl@b0fe9c88 ` 十六进制值代表什么

出于好奇,我使用以下代码显示了上下文的字符串表示:

this.toString() + "\n" + getApplicationContext().toString() + "\n" + getBaseContext().toString()
它给了我:

com.example.makz.bud。MainActivity@b0fe7ef0 android.app。Application@b0fe62a0 android.app。ContextImpl@b0fe9c88 `

十六进制值代表什么? 我能从这些值中得到有用的信息吗?
您可以在源代码中找到,该上下文不会重写toString方法。 因此,根据文档,它是Java Object.toString方法的默认表示形式:

getClass().getName() + '@' + Integer.toHexString(hashCode())
因此,我认为您无法从com.example.makz.bud获得有用的信息。MainActivity@b0fe7ef0您可以得到Context的具体实现是typecom.example.makz.bud.MainActivity,它是在默认哈希代码的b0fe7ef0内存位置十六进制表示中分配的


这是Java中toString方法的默认表示形式。

No.b0fe7ef0-不是内存位置。它是哈希代码的十六进制表示。您可以在这里找到实现:hashCode的默认实现是内存位置。不是吗?对不起,你说得对。那一页上只有推荐信。因此,我不建议使用hashCode来获取有关内存分配的信息,因为hashCode的便利性并不能保证这一点。当然,我也不建议使用hashCode。