java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java打印输出对象内容为什么可以不写.toString()

解读Java中打印输出对象内容为什么可以不写.toString()

作者:lijin8080

这篇文章主要介绍了解读Java中打印输出对象内容为什么可以不写.toString()问题,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题抛出

在 Java 中,我们经常用到 System.out.println(); 输出语句输出内容,有时候也会用于 打印对象 比如 System.out.println(Object);

当我们使用 System.out.println(Object); 打印对象时一般有两种情况产生

可以得出,不管是什么情况,输出的都是 toString();

方法里返回的内容,但我们发现, System.out.println(Object);

语句中并没有去调用 toString(); 方法

也就是说 toString(); 被隐式调用了,其实我们在写程序时也可以发现,

图中 第 7 行 的 toString 是灰色的,也就是说这里去调用 toString 是多余的

看源码,找出打印对象时,toString 隐式调用原因

1.System.out.println(Object); 可以不写 .toString() ,但打印的仍然是 toString() 中的内容

2.说明 传入一个对象 “Object”System.out.println() 方法,在 System.out.println() 方法的内部,一定对 “Object” 做了一些操作

Ctrl + 点击 println 查看源码:

println() 方法中 我们发现这是一个打印流(PrintStream),然后对象在刚进入 println() 方法后,首先通过 String.valueOf(); 被转成字符串 “s” 了,

然后最终打印输出的 是这个字符串 “s”

然后我们 Ctrl + 点击 valueOf() ; 查看 “s” 是个啥

看到这了,显然,真相已经浮出水面了。

当你传入的对象 “obj” 不为空 null返回 该对象的 toString() 的值

所以说,这就是我们在使用 System.out.println(Object); 打印对象时,可以不写 .toString() 的原因

总结

写到这,也就结束了,感兴趣的还可以多点点其他方法的源码,会有不一样的收获

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文