Java中toString()方法调用的疑问

最近在学习Java时,发现一个对象.toString()之后,还能再.toString(),但是输出结果一样,都是完整类名 + @ + 十六进制的哈希码。

自己重写的toString方法也是可以在一个类时多次调用,而且输出结果相同,所以有些疑惑,这个相同方法的多次调用到底是在干什么,他们两次穿进去的obj应该是不同的(第一次穿进去的是对象a,第二次穿进去的是a.toString())但是最后输出的结果却是一样的,这是为什么呢?

求大佬解答

字符串的toString() 返回的是字符串本身。 当你toString之后,再toString已经是字符串了
图片说明

当你第一次.toString()后,此时的结果是一个字符串了,而字符串的toString()就是返回本身,你可以去看下String的源码图片说明

一般没你这样的写法。
A a=new A();
a.toString()//这是打印的对象的地址(前提是你没重写toString方法)
a.toString().toString()//第一次toString返回的是字符串,也就是String.toString(),当然打印的还是地址啊