如果你希望 toString 方法打印出对象的内存地址,也许你会考虑使用 this 关键字

public class Test6 {
    
    @Override
    public String toString() {
        return "内存地址为"+this;
    }
    
    public static void main(String[] args) {
        Test6 t = new Test6();
        System.out.println(t);
        
    }
    
}

当你像删上面这样做的时候,会得到一个非常长的异常。其实当代码运行到 

return "内存地址为"+this;

这里发生了自动的类型转换。编译器看到一个 String 后面跟着 ‘+’ ,而再后面的对象不是 String ,于是编译器试图将 this 转为 String 。他是怎么转换的呢,正式通过 this 上的 toString方法,于是就发生了递归调用。如果你想打印出内存地址,应该调用 Object 的 toString 方法,而不是 this。

return "内存地址为"+super.toString();

 

相关文章:

  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-31
  • 2021-09-28
  • 2022-01-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-26
  • 2021-06-08
  • 2021-09-01
  • 2021-11-28
相关资源
相似解决方案