专栏首页渔夫java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?

java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

首先我们查看println的方法定义,有:

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

此处主要利用了Java中所有对象都继承了Object类,而Object类内有toString()方法。

都到这你肯定有疑问,即使你说的完全正确,但是也没见得调用了对象的toString();此疑问的解答,在于String中静态方法valueOf()方法利用到了对象的toString()方法。我们有:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

这样就完整地解答了此问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 还在使用SimpleDateFormat?你的项目崩没?

    日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家对SimpleDateFormat并不陌生。主要是用它进行时间的格式化输出和解析,挺方便快捷的,...

    格姗知识圈
  • 如何在 IDEA 使用Debug 图文教程

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用De...

    用户1516716
  • java自学出来的怎么找工作?

    一般来讲如果通过自学编程顺利找到工作的话,那么后劲一定都会非常的强劲,为什么通过自学编程找到工作的一般在公司做的还可以,作为一个从事编程行业十几年的老码农,对于...

    程序员互动联盟
  • SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集...

    知了一笑
  • Java虚拟机详解(三)------垃圾回收

      如果对C++这门语言熟悉的人,再来看Java,就会发现这两者对垃圾(内存)回收的策略有很大的不同。

    IT可乐
  • Spring Boot配置文件详解

    Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件。他们的作用都是修改Spring Boot自动配置的默认值。

    格姗知识圈
  • 你真的了解 lambda 吗(纠错篇)?

    本文链接:http://www.cmlanche.com/2018/07/22/lambda用法与源码分析/

    用户1516716
  • SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印

    日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。

    知了一笑
  • 精英程序员跟普通程序员区别在哪里?应该如何针对性的提高自己?

    正常来讲程序员之间的差异,主要还是解决问题的能力,一个好的程序框架不但可以兼容性强而且长时间运行还能非常的稳定,后续即使增加很多的功能也能不出大的问题,如果是普...

    程序员互动联盟
  • 27款阿里巴巴实用且超神的Java开源项目

    Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring C...

    格姗知识圈

扫码关注云+社区

领取腾讯云代金券