我想知道当我执行以下操作时输出到底是什么.
class Data {
int a = 5;
}
class Main {
public static void main(String[] args) {
data dObj = new data();
System.out.println(dObj);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道它提供了与对象相关的东西,因为在我的例子中输出是数据@ 1ae73783.我猜1ae73783是十六进制数.我也做了一些工作并打印出来
System.out.println(dObj.hashCode());
Run Code Online (Sandbox Code Playgroud)
我的号码是415360643.我有一个整数值.我不知道什么hashCode()
回归,仍然出于好奇,当我将1ae73783转换为十进制时,我得到了415360643!
这就是为什么我很好奇这个数字到底是什么.这是Java沙箱的一些内存位置还是其他一些东西?
NPE*_*NPE 17
会发生什么是toString()
您的类的默认方法被使用.该方法定义如下:
toString
类的方法Object
返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:Run Code Online (Sandbox Code Playgroud)getClass().getName() + '@' + Integer.toHexString(hashCode())
默认hashCode()
方法返回的值是特定于实现的:
尽管合理可行,但是
hashCode
由class定义的方法Object
确实为不同的对象返回不同的整数.(这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术.)
归档时间: |
|
查看次数: |
25279 次 |
最近记录: |