Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?

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

作者头像
Fisherman渔夫
发布于 2019-07-31 06:57:32
发布于 2019-07-31 06:57:32
1.6K00
代码可运行
举报
文章被收录于专栏:渔夫渔夫
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年06月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java SE-object类和里面的3个主要方法解读
java里面除了object类,所有的类都是存在继承关系的,object类是我们任何类的父类,所有的类的对象都可以使用object的引用进行接收;
阑梦清川
2025/02/24
240
Java SE-object类和里面的3个主要方法解读
java中String的一个小陷阱
首先大家看一段代码 public class HelloWorld { public static void main(String args[]) { String s = null; s = s+"word"; System.out.println("hello " +s); } } 大家猜猜输出结果是什么?hello word吗? 错了,答案是:hello nullword 为什么会是这样的结果呢? 这是
神秘的寇先森
2018/05/30
4160
String拼接出现null?你看到的分析可是错的
String类型真是个神奇的存在,动不动就会出现一些迷惑人的错误。今天看到一篇文中提到当String的值为null时,进行字符串相加拼接,会出现把null当做字符串拼接的现象。
程序新视界
2021/12/07
5590
String拼接出现null?你看到的分析可是错的
Java中未被初始化的字符串打印出“null”?
String字符串是我们日常生活中常用的一个类,那你知道一个未初始化的String打印出来是什么吗?
程序猿川子
2024/08/12
1810
Java中未被初始化的字符串打印出“null”?
Java中未被初始化的字符串打印出“null”?
String字符串是我们日常生活中常用的一个类,那你知道一个未初始化的String打印出来是什么吗?
一杯茶Ja
2024/09/29
2430
Java集合的subList方法分析
结论:我们会发现,虽然list 和 subList是两个不同的对象,但是我们在操作新集合时,发现原集合的数据也改变了,看一下源码:
IT云清
2019/01/22
1.9K0
浅谈(String),toString() ,String.ValueOf() 3种类型转换
这是标准的类型转换,将object转成String类型的值。使用这种方法时,需特别小心的是因定义为 Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。
用户6182664
2019/09/25
1.6K0
Java-方法调用的各种分类和大总结
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Fisherman渔夫
2019/07/31
1.7K0
Java-方法调用的各种分类和大总结
理解Java中对象基础Object类
源码注释:Object类是所有类层级关系的Root节点,作为所有类的超类,包括数组也实现了该类的方法,注意这里说的很明确,指类层面。
知了一笑
2021/09/15
2780
Java 对象如何安全的 toString
如果我们的对象为空对象的时候,我们再使用 toString() 方法,我们将会得到空对象的异常。
HoneyMoose
2022/06/09
9470
Java 对象如何安全的 toString
11.JAVA-Object类之finalize(),clone(),toString()等方法覆写
Object类是一个特殊的类,是所有类(包括数组,接口 )的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类,所以可以通过向上转型的方法使用类型为Object的变量指向任意类型的对象。
诺谦
2019/05/24
4790
灵魂拷问:你真的理解System.out.println()打印原理吗?
这应该是刚开始学习Java时用到最多一段代码,迄今为止,与它算是老朋友了。既然是老朋友,就应该多去深入了解下其“内心”深处的“真正想法”。
朱季谦
2020/10/28
2.5K0
灵魂拷问:你真的理解System.out.println()打印原理吗?
Java 学习笔记(7)——接口与多态
上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是Java中的多态以及利用多态形成的接口
Masimaro
2019/06/02
7890
java采坑之路
为什么n3== n4 是false呢?由于包装类的缓存机制。包装类的比较用equals去判断。最推荐的还是用工具类去判断。例如上面的列子如果n3=null的话n3.equals(n4)这时候就会抛出npe了。如果用工具类的话就不会存在这种情况。总之一句话判断相等如果不愿意去判空(偷懒、代码也不好看)就借助工具类。合理使用工具类可以使你的代码减少不必要的npe。
java金融
2020/08/04
5850
(String)、toString、String.valueOf用法区别(转)
在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。
Dar_Alpha
2018/09/03
1.6K0
(String)、toString、String.valueOf用法区别(转)
Java IO流之PrintWriter分析「建议收藏」
PrintWriter继承于Writer抽象类,属于字符流的一种,方法包含了写入单个字符和字符数组的方法.但不包含原始字节写入的方法.在设置自动刷新的时候,不像PrintStream流中遇到换行符就会刷新,PrintWriter只有调用了printf,println,format三类方法其中一种才会自动刷新.PrintWriter流永远不会抛出异常,因为当抛出异常的时候,流内部会将异常捕获(try{}catch(){}),然后将内部标识设置成true,表示有异常抛出,调用checkError()方法可获取此标识.
全栈程序员站长
2022/09/22
5620
Java IO流之PrintWriter分析「建议收藏」
自己动手实现一个简单的JSON解析器
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。相对于另一种数据交换格式 XML,JSON 有着诸多优点。比如易读性更好,占用空间更少等。在 web 应用开发领域内,得益于 JavaScript 对 JSON 提供的良好支持,JSON 要比 XML 更受开发人员青睐。所以作为开发人员,如果有兴趣的话,还是应该深入了解一下 JSON 相关的知识。本着探究 JSON 原理的目的,我将会在这篇文章中详细向大家介绍一个简单的JSON解析器的解析流程和实现细节。由于 JSON 本身比较简单,解析起来也并不复杂。所以如果大家感兴趣的话,在看完本文后,不妨自己动手实现一个 JSON 解析器。好了,其他的话就不多说了,接下来让我们移步到重点章节吧。
田小波
2018/04/29
4.1K15
自己动手实现一个简单的JSON解析器
Java操作Redis数据库
不了解Redis数据库的大家可以参考前两节 Redis基础 点击此处 Redis基本操作 点击此处
暴躁的程序猿
2022/03/24
3850
Java操作Redis数据库
Apache Dubbo Hessian2 异常处理时反序列化(CVE-2021-43297)
上周看到Apache官方又发布了一个Apache Dubbo Hessian2的漏洞(https://lists.apache.org/thread/1mszxrvp90y01xob56yp002939c7hlww),来看看这个描述:
Seebug漏洞平台
2022/02/23
1.2K0
Apache Dubbo Hessian2 异常处理时反序列化(CVE-2021-43297)
22个Java 代码性能优化总结
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。
用户4447430
2019/03/13
4210
相关推荐
Java SE-object类和里面的3个主要方法解读
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档