当我在Java中打印出** this **指针时,它显示的数字是多少?

这个程序

public class HelloWorld{

public void testFunc(){

System.out.println("Class = "+this);

}

public static void main(String[] args){

HelloWorld hw = new HelloWorld();

System.out.println("Hello, World");

hw.testFunc();

}

}

给我这个输出:

Hello, World

Class = HelloWorld@7c6768

这是什么@7c6768的HelloWorld后,在第二行是什么意思?

回答:

根据Object类中toString()方法的Docs

类Object的toString方法返回一个字符串,该字符串由该对象是其实例的类的名称,符号字符“

@”以及该对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回的字符串等于:

什么时候

 getClass().getName() + '@' + Integer.toHexString(hashCode())

当您在object上调用toString()时,如果您像下面这样使用

,则会得到自己的实现

 @Override

public String toString() {

//return something

}

否则,将提供默认实现,您现在将看到它

来自Object类的源代码

返回对象的字符串表示形式。通常,toString方法返回一个“以文本形式表示”此对象的字符串。结果应该是简洁易懂的陈述,便于人们阅读。建议所有子类都重写此方法。

类Object的toString方法返回一个字符串,该字符串由该对象是其实例的类的名称,符号字符“

@”以及该对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于以下值的字符串:getClass()。getName()+’@’+

Integer.toHexString(hashCode())

Returns:

a string representation of the object.

public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

以上是 当我在Java中打印出** this **指针时,它显示的数字是多少? 的全部内容, 来源链接: utcz.com/qa/398185.html

回到顶部