首页 > 其他分享 >ToStringBuilder与直接toString的区别

ToStringBuilder与直接toString的区别

时间:2024-04-24 17:23:57浏览次数:24  
标签:String 区别 ToStringBuilder toString 内存 方法 append

@Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("jobId", getJobId())
            .append("jobName", getJobName())
            .append("jobGroup", getJobGroup())
            .append("cronExpression", getCronExpression())
            .append("nextValidTime", getNextValidTime())
            .append("misfirePolicy", getMisfirePolicy())
            .append("concurrent", getConcurrent())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }

 

1、项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存。使用ToStringBuilder就可以避免暴内存这种问题。

ToStringBuilder的reflectionToString方法:

  logger.info("请求数据:"+ToStringBuilder.reflectionToString(req));

2、ToStringBuilder在包 common-lang 中,主要用于一个类的格式化输出。ToStringBuilder类中的append方法可以向该类添加基本类型、数组和对象 ,只有添加的方法才会被toString方法输出。

        ToStringStyle类则是对输出的内容进行格式化。

 

标签:String,区别,ToStringBuilder,toString,内存,方法,append
From: https://www.cnblogs.com/zhangzaizz/p/18155913

相关文章

  • 水平越权跟垂直越权区别?
    水平越权(HorizontalPrivilegeEscalation)和垂直越权(VerticalPrivilegeEscalation)是两种常见的越权攻击方式,它们之间的区别在于攻击者获取访问权限的方向和方式。水平越权(HorizontalPrivilegeEscalation)水平越权是指攻击者以同等或相同权限的身份,试图访问其他用户的资源或数......
  • jmeter中平均响应时间中百分位90,95,99区别,应该关注哪个?
      在JMeter中,平均响应时间(AverageResponseTime)以及百分位数(Percentiles)是用来衡量性能的重要指标之一。在这些指标中,99th百分位、95th百分位和90th百分位通常被用来表示响应时间的分布情况。99th百分位(P99):表示在所有请求中,99%的请求的响应时间都小于或等于该......
  • 回流和重绘的区别
    回流(reflow)和重绘(repaint)是浏览器渲染页面的两个不同过程,它们在概念上是分开的,但在实际发生时可能会有所交互。以下是两者区别:触发条件不同。回流发生在当页面的布局和几何信息发生改变时,例如添加或删除DOM元素、元素位置改变、元素尺寸改变(如边距、填充、边框、宽......
  • String.valueOf和强制类型转换(String)的区别
    String.valueOf和强制类型转换(String)在Java中都可以用来将其他类型的数据转换为字符串,但它们之间有一些重要的区别。空值处理:String.valueOf:当处理的对象为null时,String.valueOf会返回字符串"null",而不会抛出异常。(String):强制类型转换在面对null值时,会抛出NullPointerExc......
  • 在Linux中,find命令和locate命令有什么区别?
    在Linux中,find和locate都是用于查找文件的命令,但它们的工作方式和效率有着显著的不同:1.find命令工作原理:find命令直接在文件系统中遍历目录结构,实时查找符合特定条件的文件或目录。这意味着它会逐个检查文件系统的实际内容,因此查找过程可能会比较慢,尤其是当搜索大型文件系统......
  • 【转】[C#][WPF] ContentControl 和 ContentPresenter 的区别
    转自:阿里的通义灵码在 https://blog.csdn.net/yao_hou/article/details/134431366需要付费阅读,所以从阿里的通义灵码来寻找答案:WPF中的 ContentControl 和 ContentPresenter 虽然都涉及内容展示,但它们扮演着不同的角色,具有各自的特性和用途。以下是两者之间的主要区......
  • 点滴 | __str__ 方法和 __repr__ 方法的区别
    你可能会经常看到这样的写法:classSomeClass(object):def__str__(self):return'...'__repr__=__str__你可能会想,__repr__是什么,谁会去调用它,既然和__str__一样的话,为什么还需要单独定义呢。我们来看下官方给出的定义:object._repr_(se......
  • 浅谈C#中重写和隐藏的区别
    重写派生类与基类中方法名、返回参数类型、参数个数均一致,就称派生类重写了基类中的方法。usingSystem;usingSystem.Collections.Generic;namespaceDay0{classProgram{staticvoidMain(string[]args){Transporttransport......
  • Fastjson的toString链分析
    前言之前分析过Fastjson的getter链,忽略了toString链,现在补上,最终也是任意调用getter攻击测试packageorg.example;importcom.alibaba.fastjson.JSONObject;importcom.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;importcom.sun.org.apache.xalan.inte......
  • 探讨两种循环表示方法的区别,while循环与for循环的小总结
    基于前天建立的顺序表(sequeue)的其中一个功能函数,引出两个循环的表示方法的区别和比较。算法需求:在一个顺序队列中,合并相同的元素。总体思路:利用两层循环的框架,利用外层循环选中顺序表中第一个数(L->data[i]),再用内循环中进行对比(L->data[j]),如果相同就进行删除操作。首先采用......