彻底弄懂Java中的toString方法

news2024/10/7 16:22:12

在Java中,所有的类都默认显式或者隐式继承自Object类,包括你定义的类。而Object类本身有一个toString()方法,用于返回一个表示该对象的字符串,该方法返回的是一个字符串类型的值。

如果你的类没有重写该方法,那么它就会默认继承父类Object的toString()方法。因此,当你调用一个未重写toString()方法的对象的toString()方法时,实际上就是调用了Object类中默认的toString()方法,将对象转换为字符串返回。

需要注意的是,Object类的toString()方法的返回值并不总是对于对象的描述,它只是一个简单的用于标识该对象的字符串。如果你希望获取对象的特定信息的字符串表示形式,需要在你自己类中覆盖toString()方法并提供一个自定义的实现来满足你的需求。就是重写一个toString方法

为什么在转换类型的时候,默认调用Object中的toString方法不是返回对象的哈希码和类名信息,而是将对象转换为字符串

在 Java 中,进行类型转换时不会默认调用 Object 类中的 toString() 方法,而是调用对应类的类型转换方法。例如,将一个整型变量转换为字符串类型时,会调用 Integer 类中的 toString() 方法。

toString() 方法的作用是将对象转化为字符串类型,其中每个类都可以实现不同的 toString() 方法来满足自己的业务需求。如果没有重载 toString() 方法,则默认继承自 Object 类的实现返回包含对象哈希码和类名信息的字符串。

但是,在类型转换过程中,Java 编译器会根据变量的类型以及目标类型,自动调用合适的转换方法。例如,将一个 int 类型的变量转换为 String 类型时,会自动调用 Integer 类的 toString() 方法,将整型数据转换为字符串类型。这种转换过程与 Object 类的 toString() 方法无关。

需要注意的是,进行类型转换时可能存在精度损失或者转换失败的情况,因此需要谨慎处理来避免出现运行时异常等问题。另外,在进行类型转换时,最好明确指定要转换的类型,并且检测源数据是否符合转换的要求,以确保程序的正确性和稳定性。

Integer.parseInt(toString());这个toString方法是Integer的还是Object的

Integer.parseInt(toString()) 这行代码中的 toString() 方法是 Integer 类中重载的 toString() 方法。这行代码首先会调用 this 对象(即当前对象)的 toString() 方法将其转换为字符串类型,然后再将该字符串转换为整型数值。因为此时的 toString() 调用发生在 Integer 类上,并且没有显式指定其他类型,因此默认会调用 this 对象所属类 Integer 中重载的 toString() 方法。

Integer 类中重载的 toString() 方法会返回当前整型数值对应的字符串表示。例如,如果 this 对象是一个 Integer 类型的变量,其值为 123,那么 toString() 方法会返回字符串 "123"。而 Integer.parseInt() 方法则会将该字符串解析为一个整型数值并返回。

需要注意的是,如果此时的 this 对象不是 Integer 类型或者其重载的 toString() 方法无法返回一个合法的整型数值的字符串表示,那么调用 Integer.parseInt(toString()) 方法时就可能会抛出运行时异常。为了避免这种情况的发生,我们在进行类型转换时应该明确指定要转换的类型,并且检查源数据是否符合转换的要求。

String类的toString方法,返回这个对象的字符串

 

重写String的toString方法

 

Integer中的toString方法

 

Object类的toString方法,如果调用的是Object中的toString,则返回的是完全限定名和哈希值,例如:com.qing.pojo.User@3ecd23d9

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】21.智能指针

1.为什么需要智能指针 C无gc new/malloc出来的资源 是需要我们去手动释放 1.忘记释放 2.发生异常安全问题 new/malloc fun()://throw 异常 delete/free 最终都导致资源的泄漏 利用智能指针更好的去解决此类问题 2.智能指针 1RAII RAII(Resource Acquisit…

javaIO之各种流的分类与实际应用

目录 1、初识 Java IO2、传输方式划分3、操作对象划分3.1文件3.2数组(内存)3.3管道3.4基本数据类型3.5缓冲3.6打印3.7对象序列化/反序列化3.8转换 1、初识 Java IO IO,即in和out,也就是输入和输出,指应用程序和外部设备…

Java BIO 和 NIO 使用,有什么区别

Java 中的 I/O 操作主要有两种方式:BIO 和 NIO。BIO(Blocking I/O)是同步阻塞 I/O 模型,而 NIO(Non-Blocking I/O)是异步非阻塞 I/O 模型。这两种 I/O 模型在编写网络应用程序时有着不同的优缺点&#xff0…

Intel® ZTNA RA 23.03 release

摘要 传统的防火墙、入侵检测系统都是基于物理边界的,默认墙内安全,墙外不安全。随着应用程序和用户现在更可能在外围而不是内部,这种安全模型已经不再适用于当今复杂的网络场景。而“零信任”脱离了这种传统的安全模型,不再区别对…

论文浅尝 | 常识问答中的忠诚知识图解释

笔记整理:邹铭辉,天津大学硕士,研究方向为知识图谱 链接:https://aclanthology.org/2022.emnlp-main.743 动机 知识图谱通常被用作常识问答的信息来源,同时也可以用来解释模型对答案的选择。纳入图谱中事实信息的一个常…

诺贝尔奖得主Warshel:用计算化学揭开生命底层分子运行机制|智源大会嘉宾风采...

导读 复杂化学系统的多尺度建模可以用于计算机辅助药物设计、疾病致病机制、早期诊断生物标记、创新药物开发,这些具有划时代意义的研究成果,都凝结着计算化学研究先驱Arieh Warshel夜以继日的努力。 Warshel的传奇人生始于以色列一家公社的鱼塘&#xf…

【强烈推荐】3dMax自动展UV神器UV-Packer插件

UV-Packer是一款快速、精确的UV自动展开工具。这是一个一键式的解决方安,可以解决将展开的多边形排序和压缩成UV片的艰巨工作。 【适用版本】 3dMax2015-2024 【主要特性】 最小的UV区域浪费 确定良好 UV 包装的第一条规则是未覆盖的 UV 区域有多少。 浪费的空间…

操作系统的发展史(DOS/Windows篇)

操作系统的最强入门科普(Unix/Linux篇) 上一篇文章,小枣君介绍了Unix和Linux操作系统的诞生和发展。今天这篇,我再来说说微软的DOS和Windows系列。 █ DOS操作系统 上期提到,20世纪70年代,伴随着计算机技术…

360QPaaS参编信通院《组装式应用开发平台研究报告》| 应用前沿

在数字化转型的大背景下,“组装式应用” 成为行业重要战略趋势之一。数字化相较于信息化,强调基于信息数据反哺业务,业务进一步促进系统的迭代优化。组装式应用平台就是一种以业务为中心的模块化组件构成。组装式应用协力提供更灵活的组装式部…

Apache Iceberg 中引入索引提升查询性能

动手点关注 干货不迷路 ‍ ‍Apache Iceberg 是一种开源数据 Lakehouse 表格式,提供强大的功能和开放的生态系统,如:Time travel,ACID 事务,partition evolution,schema evolution 等功能。 本文将讨论火山…

治病如救火,怎样让新药研发更快、更省、更准?

说起医疗与生命科学行业,许多人可能都会想到一句俗语——“治病如救火”,可见其分秒必争的时效性。 然而,如果与日新月异的科技行业相比,医疗与生命科学行业在研发上的速度则慢得惊人。来自《自然》杂志的数据显示,一款…

搭建企业级ESB:让接口管理高效

目 录 01 接口管理现状分析‍‍‍‍‍ 02 ESB对接口的管理‍‍‍‍‍‍ 03 ESB接口管理的发展‍‍‍‍ 04 总结 01 接口管理现状分析‍ 随着社会的发展企业中建立了许多系统,系统中提供了许多接口作为业务解耦的重要手段。随着业务关系越来越复杂、依赖越来越多&…

Krpano之一全景图中嵌入可闪烁的热点图片

效果 步骤 1、打开ptgui软件加载全景图 2、镜头参数设置 3、编辑全景图 4、设置编辑模式 5、拖动鼠标和划动两个方向来调整全景图范围 调整后大概是这样的,我只要在这个区域画一个面即可,尽量让调整后是俯视图,这样在这基础上画的面会比较正一些

拼多多买家如何导出“个人中心”订单信息

经常在拼多多买东西,有时候需要把订单的物流信息导出来,方便记录和统计。现介绍如何使用dumuz工具来实现批量下载拼多多订单。 应用功能描述 模拟人工操作拼多多"个人中心-我的订单”订单网页,批量查询获取拼多多自己买的商品的订单数…

Istio 微服务架构的演变

微服务架构的演变 单体模式下面一个应用通常会有一个app server,这个app server里面会有不同的子模块,每一个模块都写在同一个应用包里面,模块和模块之间的边界有些时候设计的不是特别清晰,特别早期代码混合在一起那么意味着互相的…

PCL学习之滤波算法

前言 点云滤波作为常见的点云处理算法,一般是点云处理的第一步,对后续处理有很重要作用。滤波 有很多方面也有很多种功能,比如去除噪声点、离群点、点云平滑以及空洞、数据压缩等 原始点云数据往往包含大量散列点、孤立点,在获取…

CS 224N总结

CS 224N网址:Stanford CS 224N | Natural Language Processing with Deep Learning Lecture1 PPT网址:PowerPoint Presentation (stanford.edu) 这一讲主要讲了NLP研究的对象,我们如何表示单词的含义,以及Word2Vec方法的基本原…

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版本教学,只看这一篇就够了哦!保姆级教程!不行你来找我!)

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版,只看这一篇就够了哦!保姆级教程!!不行你来找我!) 温馨提示请仔细阅读:❤️❤️❤️❤️❤️❤️❤️❤️ 1. 由于新版…

Linux系统学习须牢记这几点

工欲善其事须先利其器,想了解Linux技术,先要有一套教学平台,请教同行或者老师来为我们解答,当然也可以下载Cygwin进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现…

Spring整合Mybatis、Junit

文章目录 1 Spring整合Mybatis思路分析1.1 环境准备步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:添加Mybatis核心配置文件步骤8:编写应用程序步骤9:运行程序 1.2 整合…