在java中,如果我们考虑一个类A,我们通过编写
来创建它的对象A aObj = new A();
其中aObj是引用变量。
谢谢!
答案 0 :(得分:4)
打印对象将调用toString()方法。如果您没有在类中重写此方法,它将打印ClassName @ hashcode
答案 1 :(得分:1)
如果你没有覆盖对象类中的toString()方法,它将调用Object
类中定义的默认实现,其中包含:
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object.
因此,您将获得Object的hashCode()表示,其可能是也可能不是其地址,因为它依赖于实现。这就是Javadoc所说的hashCode()
:
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language).
答案 2 :(得分:0)
打印对象将调用对象上的toString(),如果没有为该对象覆盖toString(),则返回类似ClassName的字符串@ Hexadecimal_Representation_Of_Hash_Code
对于类Test,输出将类似于:
Test@126b249
hashCode不一定是内存地址,而是特定于实现的。
答案 3 :(得分:0)
当你做
时System.out.println(objReference)
调用toString()实现。如果你已经覆盖了这个,那么你的实现将默认调用,否则将调用Object toString()实现,它将打印该对象的hashCode
如果你看一下String Class,它会覆盖toString方法,这就是做什么时
System.out.println(stringObjectReference)
对象引用不会打印对象包含的实际值。