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

 更新时间:2023年09月29日 08:10:14   作者:lijin8080  
这篇文章主要介绍了解读Java中打印输出对象内容为什么可以不写.toString()问题,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题抛出

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

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

  • 没有重写 toString() 方法时,输出对象的 哈希码(HashCode)
  • 若重写了 toString() 方法,按重写的格式输出

可以得出,不管是什么情况,输出的都是 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() 的原因

总结

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

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

相关文章

  • Java8 Stream流多字段求和、汇聚的实例

    Java8 Stream流多字段求和、汇聚的实例

    这篇文章主要介绍了Java8 Stream流多字段求和、汇聚的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 这一次搞懂Spring事务注解的解析方式

    这一次搞懂Spring事务注解的解析方式

    这篇文章主要介绍了这一次搞懂Spring事务注解的解析方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Springboot上传文件与物理删除功能

    Springboot上传文件与物理删除功能

    文章介绍了在Springboot中实现文件上传和删除的功能,实现了图片的上传与删除,删除数据库记录时,同步删除了文件,结合实例代码给大家讲解的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • 聊聊SpringCloud中的Ribbon进行服务调用的问题

    聊聊SpringCloud中的Ribbon进行服务调用的问题

    SpringCloud-Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。本文给大家介绍SpringCloud中的Ribbon进行服务调用的问题,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • IDEA如何实现查看UML类图

    IDEA如何实现查看UML类图

    这篇文章主要介绍了IDEA如何实现查看UML类图问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 一场由Java中Integer引发的踩坑实战

    一场由Java中Integer引发的踩坑实战

    Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类),下面这篇文章主要给大家介绍了关于由Java中Integer引发的踩坑实战,需要的朋友可以参考下
    2022-11-11
  • Java分析讲解序列化与字典功能的序列化

    Java分析讲解序列化与字典功能的序列化

    在项目开发地过程中经常会用到字典存储某些可配置的值,但相应的也会给开发带来复杂度,比如数据库存储的值为字典值:0,1,2,3这种类型的值,但是前端页面却需要展示为 启动、禁用、删除 等中文状态,下面我们来看两种解决方案
    2022-06-06
  • 详解Java 二叉树的实现和遍历

    详解Java 二叉树的实现和遍历

    二叉树可以简单理解为对于一个节点来说,最多拥有一个上级节点,同时最多具备左右两个下级节点的数据结构。本文将详细介绍一下Java中二叉树的实现和遍历,需要的可以参考一下
    2022-01-01
  • 地址到经纬度坐标转化的JAVA代码

    地址到经纬度坐标转化的JAVA代码

    这篇文章介绍了地址到经纬度坐标转化的JAVA代码,有需要的朋友可以参考一下
    2013-09-09
  • Java字符串与正则表达式操作方法详解

    Java字符串与正则表达式操作方法详解

    在Java编程中正则表达式是一个强大的工具,用于处理字符串和进行模式匹配,这篇文章主要介绍了Java字符串与正则表达式操作的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09

最新评论