当我在java中打印**这个**指针时它显示的数字是多少?

use*_*267 6 java

这个计划

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();
    }
}  
Run Code Online (Sandbox Code Playgroud)

给我这个输出:

Hello, World
Class = HelloWorld@7c6768
Run Code Online (Sandbox Code Playgroud)

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

jlo*_*rdo 13

对象的toString()实现如下:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Run Code Online (Sandbox Code Playgroud)

由于您的HelloWorld类不会覆盖它,因此这是调用的方法.


May*_*urB 9

toString()方法返回该对象的字符串表示形式.

通常,该toString()方法返回一个"文本表示"此对象的字符串.结果应该是一个简洁但信息丰富的表示,便于人们阅读.建议所有子类都重写此方法.

返回一个字符串的toString方法,class Object该字符串由对象为实例的类的名称,符号字符"@"以及对象的哈希码的无符号十六进制表示形式组成.换句话说,此方法返回一个等于值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 7

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

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:

什么时候

 getClass().getName() + '@' + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)

当您在对象调用toString(),如果你ovveride像下面,你会得到自己的实现

 @Override
  public String toString() {
     //return something 
  }
Run Code Online (Sandbox Code Playgroud)

否则提供您现在看到的默认实现

来自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());
     }
Run Code Online (Sandbox Code Playgroud)