java中tostring()自定义输出的核心是重写方法并按需拼接字段,常用方式包括手动拼接(+或stringbuilder,注意null安全与可读性)、string.format(格式统一但性能略低)、lombok @tostring(零代码生成,支持排除/指定字段)及jackson输出json(调试友好,需处理循环引用)。

Java 中 toString() 方法的自定义输出格式,核心在于重写该方法并按需拼接字段,常用方式包括字符串拼接、String.format、StringBuilder,以及借助 Lombok 或 Jackson 等工具生成结构化文本。
手动拼接:清晰可控,适合简单场景
直接在类中重写 toString(),用 + 或 StringBuilder 组装字段。注意 null 安全和可读性。
- 避免直接拼接 null 字段,可用
Objects.toString(field, "null")处理 - 推荐用换行 + 缩进提升可读性,例如:
"User{" + "\n id=" + id + ",\n name=" + name + "\n}" - 字段较多时,
StringBuilder比字符串拼接更高效
String.format:格式统一,类似 printf 风格
适合需要对齐、固定宽度或统一模板的场景,语义清晰但性能略低(尤其高频调用)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 示例:
return String.format("User{id=%d, name='%s', age=%d}", id, name, age); - 支持格式化符如
%s(字符串)、%d(整数)、%.2f(保留两位小数) - 注意:若字段可能为 null,需提前转成字符串,否则抛
NullPointerException
Lombok @ToString:零代码生成,支持灵活配置
添加 Lombok 依赖后,加注解即可自动生成,大幅减少样板代码。
-
@ToString默认包含所有非静态、非 transient 字段 - 用
includeFieldNames = true控制是否显示字段名(默认 true) - 用
exclude = {"password", "token"}排除敏感字段 - 用
of = {"id", "name"}显式指定只包含某些字段
JSON 格式输出:调试友好,便于日志或 API 查看
不严格属于 toString() 规范,但实践中常用于日志打印,可用 Jackson 或 Gson 实现。
- 引入 Jackson 后,可写:
return new ObjectMapper().writeValueAsString(this); - 建议配合
ObjectWriter设置缩进(with(SerializationFeature.INDENT_OUTPUT))提升可读性 - 注意:循环引用会报错,需配置
SerializationFeature.FAIL_ON_CIRCULAR_REFERENCES或使用@JsonManagedReference
不复杂但容易忽略细节,关键是根据使用场景选方式:日常开发推荐 Lombok;调试日志倾向 JSON;教学或轻量项目手动拼接足够。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










