Java toString() 方法超详细讲解
📅 2026/7/6 2:47:49
👁️ 次浏览
一、基础定位toString() 是谁的方法toString()是Object 类中定义的实例方法所有 Java 对象都默认继承该方法。publicStringtoString()Object 是所有类的根父类因此任何自定义类、系统类String、ArrayList、Integer等都自带 toString()。1. Object 原生 toString() 默认实现源码publicStringtoString(){returngetClass().getName()Integer.toHexString(hashCode());}输出格式类名对象哈希值十六进制示例com.demo.User1b6d35862. 默认 toString() 的问题打印对象时如果不重写只会输出一串无意义地址字符串无法直观看到对象内部数据所以业务开发几乎都要重写 toString()。二、什么时候会自动调用 toString()无需手动.toString()场景会自动触发System.out.println(对象)/System.out.print(对象)字符串拼接用户信息 user调试打印日志log.info(user)集合打印System.out.println(list)内部遍历元素自动调用toString示例UserusernewUser(1,张三);System.out.println(user);// 自动执行 user.toString()Stringinfo用户user;// 自动调用toString拼接三、重写 toString() 的规范与写法核心作用自定义输出格式打印对象时直接展示成员变量值方便调试、日志排查。标准重写模板1. 手动手写版通用classUser{privateIntegerid;privateStringname;// 构造器publicUser(Integerid,Stringname){this.idid;this.namename;}// 重写toStringOverridepublicStringtoString(){returnUser{idid, namename\};}}调用打印UserunewUser(1001,李四);System.out.println(u);// 输出User{id1001, name李四}2. IDE自动生成开发最常用IDEA / Eclipse 一键生成 toStringIDEAAlt Insert→ 选择toString()→ 勾选需要输出的字段自动生成规范代码。3. Lombok 简化项目常用添加注解ToString不用手写重写代码importlombok.ToString;ToStringclassUser{privateIntegerid;privateStringname;}缺点底层反射生成简单项目够用高性能框架慎用。四、重写 toString() 的注意事项必须加 Override 注解防止方法名拼写错误比如写成tostring小写编译器会报错提示。空值处理字段为 null 时拼接不会报错字符串会显示null无需额外判空。循环引用问题A类包含B对象B类又包含A对象toString 互相调用会栈溢出 StackOverflowError。解决重写时忽略循环引用字段。不要在 toString 中写复杂业务逻辑toString 频繁自动调用复杂计算、IO、数据库查询会严重拖慢程序。输出格式建议固定使用类名{字段1值1, 字段2值2}标准格式日志可读性统一。五、包装类、集合的 toString 实现对比Java 内置类都已经重写好 toString直接打印即可看到内容基本类型包装类Integernum123;System.out.println(num);// 123StringStringshello;System.out.println(s);// helloArrayListListStringlistnewArrayList();list.add(A);list.add(B);System.out.println(list);// [A, B]自定义类不重写UserunewUser(1,张三);System.out.println(u);// User4554617c六、toString() 与 String.valueOf()、对象转字符串区别对象.toString()对象不能为 nullnull 调用直接抛NullPointerException。String.valueOf(对象)安全方法对象为 null 时返回字符串null底层实现publicstaticStringvalueOf(Objectobj){return(objnull)?null:obj.toString();}开发推荐优先用String.valueOf()避免空指针。七、进阶toString() 与 StringBuilder 优化拼接字符串拼接底层会频繁创建 String 对象重写 toString 字段多时建议用StringBuilder提升性能OverridepublicStringtoString(){returnnewStringBuilder(User{).append(id).append(id).append(, name).append(name).append(\).append(}).toString();}八、常见面试考点总结toString() 属于哪个类Object 类所有对象都继承。默认 toString 输出什么类名哈希十六进制。为什么要重写 toString方便日志、调试查看对象属性。null 对象调用 toString 会报什么错NullPointerException可用 String.valueOf 规避。重写 toString 不加 Override 会怎样方法名写错编译器不会提示运行还是调用父类默认方法。循环引用重写 toString 会出现什么异常StackOverflowError 栈溢出。完整可运行示例publicclassToStringDemo{publicstaticvoidmain(String[]args){// 未重写toStringObjNoRewriteobj1newObjNoRewrite();System.out.println(未重写obj1);// 重写toStringStudentstunewStudent(2026001,小明,18);System.out.println(重写后stu);}}// 未重写toStringclassObjNoRewrite{}// 重写toStringclassStudent{privateLongstuId;privateStringname;privateIntegerage;publicStudent(LongstuId,Stringname,Integerage){this.stuIdstuId;this.namename;this.ageage;}OverridepublicStringtoString(){returnStudent{学号stuId, 姓名name\, 年龄age};}}运行输出未重写ObjNoRewrite1b6d3586 重写后Student{学号2026001, 姓名小明, 年龄18}
webInfo2Exploit一个内部内容门户隐藏着比表面更多的信息,而某些旧版行为可能影响受保护资源的访问方式。请从站内收集线索,获取服务器中的 flag。页面上公开了几个入口:/
/about
/repo
/search?q
/article?id首页有三篇文章分别是/article…
📅 2026/7/6 2:47:49
最崩溃的不是查重难题,而是查重达标却AI率超标亮红灯!很多工具只会简单同义词替换、浅层改字,根本洗不掉AI专属句式、行文逻辑和高频模板话术,高校AIGC检测一查一个准,论文直接被标记为AI生成,后果严重到连…
📅 2026/7/6 2:45:49
A/B测试样本量计算实战指南:从公式推导到工具应用 引言:为什么样本量计算是A/B测试的成败关键 在互联网产品迭代和运营策略优化中,A/B测试已成为数据驱动决策的核心工具。但许多团队在实施过程中常常陷入一个误区:过分关注测试版…
📅 2026/7/6 2:45:49
一、写在前面 本次分享的是发布于《Cancer Immunol Immunother》(IF5.1)的文章,感兴趣的同学可以看看原文:"Highlighting immune features of the tumor ecosystem and prognostic value of Tfh and Th17 cell infiltration …
📅 2026/7/6 4:01:58
终极免费CAN总线分析工具Cangaroo:5分钟快速上手指南 【免费下载链接】cangaroo Open source can bus analyzer software - with support for CANable / CANable2, CANFD, and other new features 项目地址: https://gitcode.com/gh_mirrors/ca/cangaroo
核心…
📅 2026/7/6 4:01:58
本文记录在 Jetson Nano Super / Jetson Orin Nano Super 平台上,基于 Ubuntu 22.04 和 ROS2 Humble 部署 Livox MID-360、FAST-LIO 和 EGO-Planner 的实机流程。
需要先明确技术边界:FAST-LIO 负责实时定位与建图,EGO-Planner 负责基于当前点…
📅 2026/7/6 4:01:58
Agentic RAG 方案深度解析:从概念到落地
> 当 AI Agent 遇见 RAG,智能检索的新范式
前言
传统的 RAG(Retrieval-Augmented Generation)架构通常遵循一条线性路径:**检索 → 生成**。这种模式在面对简单问答时表现良…
📅 2026/7/6 4:01:58
写在前面:在上一篇中,我们建立了信息泄露的系统化方法论,并学习了 ORW(Open-Read-Write)的基础 ROP 构造。然而,出题人的防守并非一成不变。当简单的 open 也被沙箱拦截时,基础的 ORW 链便会失效…
📅 2026/7/6 4:01:58
一、为什么选择Java高级开发岗?
Java 作为企业级应用开发的主流语言,在金融、电商、云计算等领域拥有不可替代的地位。高级开发岗不仅要求扎实的编码能力,更需要系统设计思维、性能优化意识和团队协作能力。本指南将帮助你用 1 个月时间系统…
📅 2026/7/6 3:59:58
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray
你是否厌倦了Windows任务栏上密密麻麻的图标&…
📅 2026/7/6 0:01:19
1. 项目概述:一次对React Server Components核心安全机制的深度剖析 最近在安全研究圈里,CVE-2025-55182这个编号被频繁提及,它直指React生态中一个相对较新的概念——React Server Components(RSC)。作为一个长期关注…
📅 2026/7/6 0:01:20
星露谷物语终极MOD指南:5个步骤打造智能自动化农场 【免费下载链接】StardewMods Mods for Stardew Valley using SMAPI. 项目地址: https://gitcode.com/gh_mirrors/st/StardewMods
你是否厌倦了在星露谷物语中重复收割、加工、存储的繁琐操作?梦…
📅 2026/7/6 0:01:20
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/5 0:01:51
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/5 0:01:51
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/5 0:01:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/5 6:01:04
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/5 6:01:04
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/5 23:45:08