欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

在toString()方法中千万不要使用this,tostringthis

来源: javaer 分享于  点击 46319 次 点评:148

在toString()方法中千万不要使用this,tostringthis


如果我们想打印出一个对象的引用地址,我们可以想到重写toString()方法,在该方法中打印this的值,因为this就是指代的本身。

然后我们就写了如下的代码:

@Override
public String toString(){
       return "对象地址:"+this;
}

可是,这样的话,就导致了toString()方法的无限递归调用,最终导致内存溢出。

为什么会这样呢?

我们知道,当我们使用+进行字符串的连接时,如果+后面跟的不是一个字符串的话,会自动调用其toString()方法。(ps:因为java中

所有的对象默认继承自Object对象,而toString()方法是Object中的方法,所以所有的对象都会有toString()方法)。就像上面,就会调用

this.toString()方法。我们知道,this指的就是本身,所以调用的就是本身的toString()方法,也就是还是这个方法。

那么问题来了,我们调用一个toString()方法后,它为了将this转为字符串,一直调用自身的toString()方法,导致了递归调用,最终导致

内存溢出。

所以,我们可以调用super.toString()打印内存地址,避免导致无意识的递归调用。

相关文章

    暂无相关文章

用户点评