解读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() 的原因

总结

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

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

相关文章

  • java中hashmap的底层数据结构与实现原理

    java中hashmap的底层数据结构与实现原理

    Hashmap是java面试中经常遇到的面试题,大部分都会问其底层原理与实现,本人也是被这道题问惨了,为了能够温故而知新,特地写了这篇文章,以便时时学习
    2021-08-08
  • Spring中@PostConstruct注解的使用讲解

    Spring中@PostConstruct注解的使用讲解

    这篇文章主要介绍了Spring中@PostConstruct注解的使用讲解,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次,PostConstruct在构造函数之后执行,init()方法之前执行,PreDestroy()方法在destroy()方法之后执行,需要的朋友可以参考下
    2023-11-11
  • java并发之ArrayBlockingQueue详细介绍

    java并发之ArrayBlockingQueue详细介绍

    这篇文章主要介绍了java并发之ArrayBlockingQueue详细介绍的相关资料,需要的朋友可以参考下
    2017-05-05
  • Spring Boot虚拟线程Webflux在JWT验证和MySQL查询性能比较

    Spring Boot虚拟线程Webflux在JWT验证和MySQL查询性能比较

    这篇文章主要为大家介绍了Spring Boot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 浅析Java中对称与非对称加密算法原理与使用

    浅析Java中对称与非对称加密算法原理与使用

    密码学是研究编制密码和破译密码的技术科学。这篇文章主要为大家介绍了Java中对称与非对称加密算法的原理与使用,感兴趣的小伙伴可以了解一下
    2023-03-03
  • oracle+mybatis-plus+springboot实现分页查询的实例

    oracle+mybatis-plus+springboot实现分页查询的实例

    本文主要介绍了oracle+mybatis-plus+springboot实现分页查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • java编程创建型设计模式工厂方法模式示例详解

    java编程创建型设计模式工厂方法模式示例详解

    这篇文章主要为大家介绍了java编程创建型设计模式之工厂方法模式的创建及案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-02-02
  • 使用自定义注解实现加解密及脱敏方式

    使用自定义注解实现加解密及脱敏方式

    这篇文章主要介绍了使用自定义注解实现加解密及脱敏方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 使用session实现简易购物车功能

    使用session实现简易购物车功能

    这篇文章主要为大家详细介绍了使用session实现简易购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • java Date和SimpleDateFormat时间类详解

    java Date和SimpleDateFormat时间类详解

    这篇文章主要介绍了java Date和SimpleDateFormat时间类详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论